<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
	xmlns:media="http://search.yahoo.com/mrss/"
>

<channel>
	<title>Just learning and thinking &#187; 开发日志</title>
	<atom:link href="http://www.rushcj.com/laomi/archives/category/%e5%bc%80%e5%8f%91%e6%97%a5%e5%bf%97/feed" rel="self" type="application/rss+xml" />
	<link>http://www.rushcj.com/laomi</link>
	<description></description>
	<lastBuildDate>Tue, 01 Nov 2011 15:57:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
	<!-- podcast_generator="podPress/8.8" - maintenance_release="8.8.4" -->
		<copyright>Copyright &#xA9; 2012 Just learning and thinking </copyright>
		<managingEditor>laomi4569@gmail.com ()</managingEditor>
		<webMaster>laomi4569@gmail.com ()</webMaster>
		<category>posts</category>
		<itunes:keywords></itunes:keywords>
		<itunes:subtitle></itunes:subtitle>
		<itunes:summary>Just learning and thinking</itunes:summary>
		<itunes:author></itunes:author>
		<itunes:category text="Society &amp; Culture"/>
		<itunes:owner>
			<itunes:name></itunes:name>
			<itunes:email>laomi4569@gmail.com</itunes:email>
		</itunes:owner>
		<itunes:block>No</itunes:block>
		<itunes:explicit>no</itunes:explicit>
		<itunes:image href="http://www.rushcj.com/laomi/wp-content/plugins/podpress/images/powered_by_podpress_large.jpg" />
		<image>
			<url>http://www.rushcj.com/laomi/wp-content/plugins/podpress/images/powered_by_podpress.jpg</url>
			<title>Just learning and thinking</title>
			<link>http://www.rushcj.com/laomi</link>
			<width>144</width>
			<height>144</height>
		</image>
		<item>
		<title>使用openlayers调用本地瓦片数据方案</title>
		<link>http://www.rushcj.com/laomi/archives/251</link>
		<comments>http://www.rushcj.com/laomi/archives/251#comments</comments>
		<pubDate>Fri, 31 Dec 2010 07:33:08 +0000</pubDate>
		<dc:creator>laomi</dc:creator>
				<category><![CDATA[开发日志]]></category>
		<category><![CDATA[地名引擎]]></category>
		<category><![CDATA[gis]]></category>

		<guid isPermaLink="false">http://www.rushcj.com/laomi/?p=251</guid>
		<description><![CDATA[身边经常有一些朋友在与GIS项目的时候抱怨没有地图数据，而实际上他们在做具体的应用的时候常常仅仅是需要一个地图来使得应用程序变得更漂亮。以前自己也遇到过一些这些问题，在08年公司做兼职的时候，就行开发一个离线的GIS数据包，这些的话，对于一些小型的应用程序就不用花大笔的钱去购买地图数据。 对于以上的问题，大家常常采用的是两种解决方案：一种解决方案就是直接使用一些第三方数据服务，例如Google maps 或者是MapABC的API来实现自己的功能，这种方法开发比较简单，很容易上手，但是一个重要问题就是给一些不能上网的客户来说，这样的开发方式就不适合了；另外一种方式就是让客户购买地图数据去支持应用程序，这样的方式用户需要花一些钱去购买地图数据（我以前在做项目的过程中，由于地图数据量不是很大，所以也可以用一些基础图层，然后再加上一些影像数据进行数字化）。其实上述的两种方式是目前大多数应用程序解决地图数据的主要方法，下面本片文章介绍第三种方式来实现（特在此申明，文章中提出的方法仅仅是提供交流和学习使用，如果使用商业用途用户自行负责）。 如果想从本地访问瓦片数据的话，首先需要解决的问题是从一些公共地图服务中获取瓦片数据。在这里将使用工具http://www.daogle.com/?page_id=66下载地图的瓦片数据。瓦片数据下载到本地之后，可以看到瓦片的数据命名“m_14_13519_6253.png”，其中m后面的14代表的目前的缩放级别，“13519”代表的是瓦片数据的横坐标，“6253”代表的是瓦片数据的纵坐标。对于Google maps用的是墨卡托投影方式，将地图投影成了一个40075016.685578488 m的正方形坐标的形式，然后根据缩放级别将这个正方形分割成不不同粒度的小正方形，这种分割的形式采用的是四叉树索引的方式进行。具体的分割如下图所示。 首先在level 0级别的时候，就是将这个正方形划分为一个256 像素的图片，如果化成米的形式的话，就是40075016.685578488的正方形，从这里可以计算出比例为：40075016.685578488/256 = 156543.033928041 （米/像素）。对于level 1级别时，然后再将这个正方形划分为一个4个256像素的正方形，此时计算出的比例为：40075016.685578488/512 = 78271.51696402 （米/像素）。 对于OpenLayers来说，首先会向wms服务发送一个请求，这个请求会有一个bbox参数，参数的形式是这个box的左上角坐标和右下角坐标的值，对于后来服务来说，就是将这个box的图片发送到前台去显示。对于要使用本地的瓦片数据，根据上面对于瓦片数据的命名方式我们可以知道需要求三个参数：缩放级别 zoom、横坐标 x和纵坐标的值 y。而对于请求来说，只有bbox的值，所以需要根据根据bbox的值来求出x，y和缩放级别的值zoom。首先从前台来说，展现的总图片应该是一个360°×360°的正方形的图片，这是对于缩放级别为一级的来说的；对于一个bbox中的经纬度，可以计算出缩放级别： Java代码： double mapUnit = 360/(x1-x0);//156543.033929687 double z = Math.log(mapUnit)/Math.log(2); long zoom = Math.round(z); 计算出缩放级别之后，然后根据公式x = ((20037508.343 * 2 * ( x0 + 180 ) / 360 ) / pixelResolution)/256可以计算出x的坐标，同理根据公式y = ((20037508.343 * 2 * ( y0 [...]]]></description>
		<wfw:commentRss>http://www.rushcj.com/laomi/archives/251/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>arcgis server 9.3.1 rest开发学习（三）</title>
		<link>http://www.rushcj.com/laomi/archives/230</link>
		<comments>http://www.rushcj.com/laomi/archives/230#comments</comments>
		<pubDate>Wed, 21 Jul 2010 11:11:01 +0000</pubDate>
		<dc:creator>laomi</dc:creator>
				<category><![CDATA[开发日志]]></category>
		<category><![CDATA[arcgis]]></category>
		<category><![CDATA[空间数据挖掘]]></category>
		<category><![CDATA[geoprocessing]]></category>

		<guid isPermaLink="false">http://www.rushcj.com/laomi/?p=230</guid>
		<description><![CDATA[arcgis server geoprocessing中简单的介绍了一下geoprocessing service中的一些相关的概念，接下来主要是按照自己以前的经验编写两个例子，一个是buffer的例子，另外一个是计算点密度分析的。在这里主要是借助ModelBuilder和geoprocesssing来完成，最后自己的例子主要是采用javascript rest开发。 首先使用的是arcgis的modelbuilder创建一个model，关于model的创建方法以及相关的资料，可以访问以下资源： an overview of geoprocessing:http://webhelp.esri.com/arcgisdesktop/9.3/index.cfm?TopicName=What_is_geoprocessing? guide to create a model in arcgis model builder :http://webhelp.esri.com/arcgisdesktop/9.3/tutorials/gp/GP_4_6.htm an overview of writing geoprocessing script:http://webhelp.esri.com/arcgisdesktop/9.3/index.cfm?TopicName=An_overview_of_writing_geoprocessing_scripts . And there are many sample wrote by python. an overview of geoprocessing with arcgis server :http://webhelp.esri.com/arcgisdesktop/9.3/index.cfm?TopicName=An_overview_of_geoprocessing_with_ArcGIS_Server 首先我们来介绍一下buffer的例子，该例子的效果是当你用鼠标在地图上点击时，然后再地图上就会创建一个缓冲区，该缓冲区的大小是可以限制的。关于缓冲区的模型的建立实际上只要将arcgis arctoolbox 中analysis tools&#8212;&#62;proximity&#8211;&#62;buffer拖拽到model builder中，然后设置输入、输出参数（如下图所示，其中p就是已经设置了参数，可以很据箭头的方式来判断输入输出参数，其实这个是在创建一个toolbox中已经设计好的）。下图是一个已经完全建立好的model，剩下来只要将这个model发布成一个geoprocessing service就行了。 发布成geoprocessing service的时候，有两种选择，一种方式发布成同步的方式，另外一种方式是发布成异步的方式（这两种方式的主要区别的是：前一种方式是用户提交了geoprocessing service请求之后，只有完成了计算之后才可以进行其他操作；另外一种方式用户提交了请求之后，可以进行其他的操作，geoprocessing service 完成之后，将相关的结果显示出来 ）。在这里我们采取的选择的方式同步的方式进行发布geoprocessing [...]]]></description>
		<wfw:commentRss>http://www.rushcj.com/laomi/archives/230/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>arcgis server 9.3.1 rest开发学习（二）</title>
		<link>http://www.rushcj.com/laomi/archives/227</link>
		<comments>http://www.rushcj.com/laomi/archives/227#comments</comments>
		<pubDate>Sat, 03 Jul 2010 08:37:27 +0000</pubDate>
		<dc:creator>laomi</dc:creator>
				<category><![CDATA[开发日志]]></category>
		<category><![CDATA[arcgis]]></category>
		<category><![CDATA[geoprocessing]]></category>
		<category><![CDATA[rest]]></category>

		<guid isPermaLink="false">http://www.rushcj.com/laomi/?p=227</guid>
		<description><![CDATA[arcgis server 9.3.1 rest开发学习（一）中已经描述了rest开发的简单的例子，主要是在地图加载的时候在地图上添加了点数据﻿，在此例中清楚了rest  javascript开发的一些对象。在这部分主要接触的是在使用queryTask查询地图中的数据，并以柱状图的形式显示出来，在这里需要接触两个知识，一个是querytask，另外一个是使用dojo来实现柱状图。 也许你要问一下为什么使用的是dojo，而不是其他的JavaScript的包，其实其他的包也完全没有问题，你甚至是可以使用Google Chart 服务来完成这部分工作，我之所以使用dojo的主要原因是arcgis rest javascript sdk用的也是dojo的包。 esri.tasks.QueryTask对象就是对一个ArcGIS Server REST 链接（这里面的链接通常是一个图层，例如http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer/3）执行一个查询任务。通过下面的图我可以知道，关于QueryTask的执行是在一个图层上进行的。QueryTask执行的主要步骤： 初始化一个map，然后添加一个图层，这个图层主要是作为背景图层显示的 初始化一个QueryTask对象，参数是一个utl，这个url制定为一个mapservice的Layer，例如上面所说的http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer/3 初始化一个query（esri.task.Query）对象，对于query对象中主要做的是对查询条件的设置，返回结果设置等。 设置信息显示窗口的大小。 如果有Geometry对象返回的话，设置Geometry对象的样式。 相应的代码如下： map = new esri.Map(&#8220;map&#8221;, {extent:extent}); map.addLayer(new esri.layers.ArcGISTiledMapServiceLayer(&#8220;http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer&#8221;)); map.addLayer(new esri.layers.ArcGISDynamicMapServiceLayer(&#8220;http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer&#8221;, { opacity:0.4 })); dojo.connect(map, &#8220;onClick&#8221;, doQuery); queryTask = new esri.tasks.QueryTask(&#8220;http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer/3&#8243;); dojo.connect(queryTask, &#8220;onComplete&#8221;, getChart); dojo.connect(map.infoWindow, &#8220;onHide&#8221;, function() {map.graphics.clear();}); query = new esri.tasks.Query(); query.spatialRelationship = esri.tasks.Query.SPATIAL_REL_INTERSECTS; query.outFields [...]]]></description>
		<wfw:commentRss>http://www.rushcj.com/laomi/archives/227/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>gdal中的ogr配置</title>
		<link>http://www.rushcj.com/laomi/archives/223</link>
		<comments>http://www.rushcj.com/laomi/archives/223#comments</comments>
		<pubDate>Sun, 27 Jun 2010 07:21:06 +0000</pubDate>
		<dc:creator>laomi</dc:creator>
				<category><![CDATA[开发日志]]></category>
		<category><![CDATA[空间数据挖掘]]></category>
		<category><![CDATA[gis]]></category>
		<category><![CDATA[opengis]]></category>

		<guid isPermaLink="false">http://www.rushcj.com/laomi/?p=223</guid>
		<description><![CDATA[最近在写一个spatial association rule的代码，选择的语言是用c/c++来编写，由于这个算法中需要用到空间关系计算这一块，所以需要选用一个能够计算空间关系的库来完成这一部分工作（既然已经有了现成的工具，没有必要自己再去开发一个了），在这里我们选择的是gdal中的ogr。 The OGR Simple Features Library is a C++ open source library (and commandline tools) providing read (and sometimes write) access to a variety of vector file formats including ESRI Shapefiles, S-57, SDTS, PostGIS, Oracle Spatial, and Mapinfo mid/mif and TAB formats. OGR is a part of the GDAL library. 通过官方网站上的介绍我们可以知道ogr的主要作用是一个对矢量数据的解析和操作的库，然后我再根据我们的需求（解析shapefile以及求出shapefile中的geometry中的空间关系，例如：距离关系、拓扑关系等），我们知道了它能够很好的满足我们的需求，说到这我当时觉得这已经不是什么很困难的问题了，所以自己就准备开始做了。 自己以前也没有用过c/c++写过什么程序，基本上也就是一些简单的数据结构和算法，发现自己对于如何将这个库引用到工程文件中来也是没有什么办法，自己甚至土鳖的将这些源码直接拷到工程文件中去编译，当时也是报了很多的错误。幸好在这个信息时代有Google（百度对于技术类的文章搜索还是没有google那么的强大，起码从我的经验来看是这样的），自己从网上也搜集了一些资料，这里总结具体的编译步骤如下： 由于我们需要空间关系的运算，所以我们需要将geos下载下来，因为在编译gdal的时候它会需要geos的库： [...]]]></description>
		<wfw:commentRss>http://www.rushcj.com/laomi/archives/223/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>arcgis server geoprocessing</title>
		<link>http://www.rushcj.com/laomi/archives/217</link>
		<comments>http://www.rushcj.com/laomi/archives/217#comments</comments>
		<pubDate>Mon, 21 Jun 2010 02:54:36 +0000</pubDate>
		<dc:creator>laomi</dc:creator>
				<category><![CDATA[开发日志]]></category>
		<category><![CDATA[arcgis]]></category>
		<category><![CDATA[实习]]></category>
		<category><![CDATA[geoprocessing]]></category>
		<category><![CDATA[rest]]></category>

		<guid isPermaLink="false">http://www.rushcj.com/laomi/?p=217</guid>
		<description><![CDATA[以前对于arcgis只是给美国那边解决一些简单的小问题，毕竟那边没有什么专门的人来做arcgis开发，最近自己这边的设计也快出来了，开始准备开始做系统开发，从目前的开发框架上来说，自己还主要是学习使用rest的方式来开发arcgis中的功能。之所以选择rest开发主要有两个原因：第一是项目的具体需求需要；第二的原因是arcgis server的rest开发方式实现了我多年梦寐以求的GIS开发模式。其实这arcgis最有魅力的地方还是arcgis server中的geoprocessing的部分，如果你选择了使用这种开发模式的话，我相信你的代码量将会减少到只有原来的三分之一左右，如果是要是需要arcgis中多个功能之间进行组合的话，那这样的方式更适合你。 想要了解arcgis server中的geoprocessing service 的话，首先应该了解是arcgis desktop中的arctoolbox和ModelBuilder部分，因为要使用geoprocessing service需要发布的是arctoolbox，在实际调用的时候只要根据参数和服务地址来调用相应的服务。自己在学习这方面的资料的时候看的资料都是零零散散的，只有在youku上看见了一个arcgis的培训视频之后才慢慢的明白其中的一些意思。 首先介绍一下modelbuilder,打开一个arcmap或者是catalog,然后打开arctoolbox中新建一个arctoolbox，然后你可以之间将相关的arcmap中的一些arctoolbox中的一些功能直接拖拽到你新建的modelbuilder中去，这样发布出去的geoprocessing服务与具体的地图没有关系，这样发布出来的服务能够被任何应用程序调用，不过需要对于数据的输入输出必须得满足您所选择的开发模式。具体的数据支持请参考:input and output data types，大家目前习惯的开发模式为rest开发方式，而且很多的事情是直接在web应用中去调用geoprocessing service的服务。 对于geoprocessing service的服务发布存在两种方法，第一种是直接使用arcgis server manager来发布服务，一般来说如果是仅仅简单的进行发布一个geoprocessing service的话，那直接在新建service中新建一个geopeocessing service；另外一种发布geoprocessing service的方式是使用catalog的方式进行部分。 Geopeocessing service 其实有三种： A geoprocessing service A geoprocessing service with a source map document A geoprocessing service with a result map service 关于三种service的大概可以理解成： A geoprocessing service， 你可以理解成这中geoprocessing service的形势其实是将model直接发布成服务，它是一个开发的服务，可以被任何应用程序使用，根据geoprocessing service的输入输出数据类型，我们可以知道它会对数据输出数据有一些限制。 A geoprocessing service with [...]]]></description>
		<wfw:commentRss>http://www.rushcj.com/laomi/archives/217/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>arcgis server 9.3.1 rest开发学习（一）</title>
		<link>http://www.rushcj.com/laomi/archives/211</link>
		<comments>http://www.rushcj.com/laomi/archives/211#comments</comments>
		<pubDate>Tue, 13 Apr 2010 14:09:07 +0000</pubDate>
		<dc:creator>laomi</dc:creator>
				<category><![CDATA[开发日志]]></category>
		<category><![CDATA[arcgis]]></category>
		<category><![CDATA[rest]]></category>

		<guid isPermaLink="false">http://www.rushcj.com/laomi/?p=211</guid>
		<description><![CDATA[以前自己做arcgis server的开发一般都是基于jsf框架做的，最近美国同事那边开始做基于rest的开发方式，自己以前在java的条件下做了几个demo，感觉还不错，开发起来比jsf感觉要爽很多，不需要一大堆jsf之类的东西。 开始自己想实现简单的功能就是在地图加载的时候自己直接添加上一些点，自己做一个test程序，程序的代码如下： dojo.require(&#8220;esri.map&#8221;); var map; function init() { var startExtent = new esri.geometry.Extent(-117.29, 34, -117.14, 34.10, new esri.SpatialReference({ wkid: 4326 }) ); map = new esri.Map(&#8220;map&#8221;,{ extent: startExtent }); var tiledMapServiceLayer = new esri.layers.ArcGISTiledMapServiceLayer(&#8220;http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer&#8221;); map.addLayer(tiledMapServiceLayer); addPointToMap(); } function addPointToMap(){ //alert(map.graphics) var markerSymbol = new esri.symbol.SimpleMarkerSymbol(); markerSymbol.setStyle(esri.symbol.SimpleMarkerSymbol.STYLE_CIRCLE); markerSymbol.setSize(12); markerSymbol.setColor(new dojo.Color([255,0,0,0.5])); pointESRI = new esri.geometry.Point(-117.233,34.057, map.spatialReference); [...]]]></description>
		<wfw:commentRss>http://www.rushcj.com/laomi/archives/211/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>arcgis 空间分析</title>
		<link>http://www.rushcj.com/laomi/archives/196</link>
		<comments>http://www.rushcj.com/laomi/archives/196#comments</comments>
		<pubDate>Sat, 06 Mar 2010 10:37:08 +0000</pubDate>
		<dc:creator>laomi</dc:creator>
				<category><![CDATA[开发日志]]></category>
		<category><![CDATA[arcgis]]></category>
		<category><![CDATA[空间数据挖掘]]></category>
		<category><![CDATA[gis]]></category>

		<guid isPermaLink="false">http://www.rushcj.com/laomi/?p=196</guid>
		<description><![CDATA[最近在这边实习的主要工作是做数据挖掘的工作，自己以前在实验室也做了一些类似的工作，但是以前的工作相对来说比较简单。目前自己主要做的事情首先就是利用spatial analyze部分分析数据，看看目前自己所用所的数据特征，然后再决定做什么。 关于arcgis spatial analyze的部分主要包括以下几个:在这里面有不少你常常用来做数据分析的工具，例如点密度分析，均值和方差分析，栅格图的差值以及表面分析等。最近我收到有一些数据要做一些空间的处理，如果有过的东西自己来写程序也不是很难，但是已经有了现成的工具干嘛不用，况且只是用这些工具来分析一下这些数据适合做些什么处理。在做这些数据处理的工作中，自己主要是用到了空间分析中的点密度分析，对于计算出来的栅格数据对他们进行均值和方差的计算,后来主要是用了spatial statistic中的一些工具来判断自己的数据是不适合做聚类分析等，其实在spatial statistics中有很多关于计算聚类的工具比如：analyzing pattern中的一些工具，不知道熟悉arcgis arcmap工具的朋友们知道不，在arcgis arctool box中有很多的工具是可以看到他们的python代码，其实这些也是学习用arcgis 来做开发的一些很好的资料。这次自己也用vba开发了一些arcgis的程序的运用，主要用来将最后的计算结果以更好、更形象的方式展现出来。 自己以前对于arcgis还是挺排斥的，我想主要原因有：第一在刚刚接触gi产品的时候，自己第一个接触的产品时mapinfo，而且mapinfo在界面设计方面确实是做的非常的人性化，自己从一用上它就喜欢它了；第二的主要原因是arcgis功能很强大，很多的功能需要经过专业的培训才能很好的掌握，但是自己在平常的项目中，用到得GIS得功能相当的简单，用maoinfo基本上就能解决了，所以自己也不是很想去接触arcgis，毕竟平常没有那么多的时间去接触他。但是来这边实习之后，自己慢慢的发现arcgis的强大之处，它的强大确实是超出了我的想象范围，现在自己确实认为他是一个很不错的GIS工具，但是想很好的掌握这个工具还得花些时间去弄清arcobject，现在自己只是接触了arcobject中很少，比较简单的部分。 在实习的接下来的日子里，自己的事情会比较多，因为自己在这边不光是做GIS方面的开发，还需要读空间数据数据挖掘的相关论文，因为实习的最后检验目标就是发一片论文。]]></description>
		<wfw:commentRss>http://www.rushcj.com/laomi/archives/196/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>地名引擎</title>
		<link>http://www.rushcj.com/laomi/archives/176</link>
		<comments>http://www.rushcj.com/laomi/archives/176#comments</comments>
		<pubDate>Sat, 31 Oct 2009 07:29:49 +0000</pubDate>
		<dc:creator>laomi</dc:creator>
				<category><![CDATA[开发日志]]></category>
		<category><![CDATA[地名引擎]]></category>

		<guid isPermaLink="false">http://www.rushcj.com/laomi/?p=176</guid>
		<description><![CDATA[目前这个关于地名的搜索引擎叫做地名引擎，按照字面的意思就是按照地名来进行检索，其实这个在其他的网站上也可以看到相关的应用。我们所做的地名引擎的开始目前是为了管理我们实验室的数据，最后发展成为一个以地名为核心的知识系统。 截止昨天为止，我们的地名引擎可以看到的数据有地名的位置、相关的描述以及关于这个地方的相关的应急预案和应急案例信息，目前的功能相对来说比较简单，主要还是直接采用关键字做匹配的。我们实验室关于地名的本体也快发布出来了，今后的地名引擎的主要功能为会围绕着它来做。在接下来的功能中我们将会加入我们现有的一些数据信息来增加关于地名的相关知识，在昨天的讨论中，大家都觉得应该将个性话的部分加进去，所以到时候我还得花点时间来研究一下关于个性化的部分，按照目前关于个性化的数据的收集主要分为两个部分：一个是显式的去收集用户的喜好数据，比如让用户填写自己的兴趣、爱好和自己所从事专业方向，或者是在搜索结果中让搜索引擎去和用户交互；另外一种方式是隐式的去收集用户的数据，一般来说这种方法就是看用户点击了或者是没有点击哪条数据，然后分析用户所感兴趣的文档进行分析用户可能会对那些关键字感兴趣。个性化搜索加进去之后，还可以给用户做一些简单的推荐。 关于用户的日志分析来对搜索结果进行优化是目前搜索引擎研究的主要热点，目前分析日志采用的主要方法有Rocchiho的算法。在前天挺英国罗伯特戈登大学的一个教授做了一个关于目前上下文（context 也有人翻译为情景）的信息检索的报告，他里面采用了一种他们自己提出的关联词的方法，他们的论文是发在ACM 的SIGIR上面的，如果自己真的会弄这一块的话，一定得好好读读他们发的论文。 因为在我们的地名引擎中将会涉及到多种数据，面向的用户也是社会上的多种角色，所以我们第一步要做的工作可能相对来说比较简单，让用户去选择他们可能会感兴趣的数据的种类，这样的话可以给用户减少一些干扰数据。其实这样的方法实现起来也比较简单，然后我们会在后台记录下用户的选择的数据类型（其实准备的来说是记录下用户不感兴趣的数据类型，因为用户不感兴趣的类型的数据相对来说是比较好确定的）。对于搜索的词条也会在后台会做记录，方便以后对数据进行分析，提高搜索的覆盖率（召回率）和准确率。 目前的地名输入部分的工作也是比较简单，没有任何提示的方式，所以准备在用户输入的部分加入一些类似于google suggest类型的工作，这样的话以方便用户方便的找到自己要搜寻的地名。]]></description>
		<wfw:commentRss>http://www.rushcj.com/laomi/archives/176/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>界面设计</title>
		<link>http://www.rushcj.com/laomi/archives/172</link>
		<comments>http://www.rushcj.com/laomi/archives/172#comments</comments>
		<pubDate>Sat, 24 Oct 2009 04:41:06 +0000</pubDate>
		<dc:creator>laomi</dc:creator>
				<category><![CDATA[开发日志]]></category>
		<category><![CDATA[基于内容推荐]]></category>
		<category><![CDATA[地名引擎]]></category>
		<category><![CDATA[gis]]></category>

		<guid isPermaLink="false">http://www.rushcj.com/laomi/?p=172</guid>
		<description><![CDATA[地名引擎的最后的功能还没有完全确定下来，目前确定显示的数据有：应急预案、应急案例、地名的相关介绍性数据和地图数据等。上两个星期自己主要是将程序的主要框架写完了，至于程序框架的合理性问题，目前只能是说按照目前的需求来写，并在此基础之上自己把有可能出现的问题先考虑进去。 其实我们在考虑做地名引擎之前，也看过不少的地名引擎相关的资料，其中也包括Google Maps,Baidu map,mapbar,mapabc和Sogou相关的地图搜索。他们的搜索都做的非常的强大，而且是和人们的生活是密切相关的。我们要做的地名引擎的主要目的是从知识的角度来思考，这个也是我们的地名引擎与现在的GIS搜索主要区别的地方，我们的最终结果是将与地名相关的知识展现出来。目前我们有的数据有地名数据（包括经纬度坐标和相关的介绍数据）、突发事件数据、湖泊数据、人口数据和气象数据等。我们地名引擎做的就是要以地名为主要搜索关键字，将与他相关的信息有组织的形式展现出来。 然而目前界面设计确实是一种很恶心的事情，我们实验室就缺乏这样的一个人，我做的界面大家都看的有点想吐了，颜色搭配太不协调了。不过我一直想想做一个类似于iGoogle那样的界面，而且用户可以根据自己对于信息喜好来管理需要显示的信息。如果用户在查看数据的过程中发现我们的数据有误，用户还能够对出错的数据进行修改，经过审核之后就可以将正确的数据展现出来。学术界常常称这种引擎为知识引擎，其实现在可以找到类似的搜索引擎，例如yebol和wolframalpha ,但是他们的范围都比较广泛，所以相对来说数据组织的不是很好，wolframalpha不支持中文搜索。用户在修改错误的数据的时候，必须得说明自己正确数据的来源，杂志的名称或者是互联网的url地址。在系统中目前还打算预留关于信息推荐的部分，根据用户的搜索记录和用户的浏览记录，将用户有可能感兴趣的信息推荐给用户。 目前我的界面只是做出了一个简单的轮廓，等实验室有了好的前台程序人员的时候，可以和让一起商量关于前天页面的事情。]]></description>
		<wfw:commentRss>http://www.rushcj.com/laomi/archives/172/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>估计得忙一阵子了</title>
		<link>http://www.rushcj.com/laomi/archives/169</link>
		<comments>http://www.rushcj.com/laomi/archives/169#comments</comments>
		<pubDate>Sat, 17 Oct 2009 12:41:03 +0000</pubDate>
		<dc:creator>laomi</dc:creator>
				<category><![CDATA[开发日志]]></category>
		<category><![CDATA[信息检索]]></category>
		<category><![CDATA[地名引擎]]></category>

		<guid isPermaLink="false">http://www.rushcj.com/laomi/?p=169</guid>
		<description><![CDATA[自己这一年多来一直忙着实验室的那点项目，说句实话现在做的东西真的是很难投入使用，目前自己的总结原因有：开发氛围不好，简单的来说很多人都没有把这项目当回事（估计老板也差不多），所以从项目管理上很难入手；业务分析不够透彻，做软件产品的话，就必须得好好的分析一下实际情况，我们基本上是凭空想象。最近老板又让我做地名引擎，说句实话，我的兴致很高，就怕哪一天他对这个不感兴趣，我又是瞎折腾了。 目前总体上可以这么说，地图数据我们已经有了，至于这个地名引擎不在于地图本身，其主要是基于地名数据基础之上的。自己大概花了两天的时候好好的将自己要做的东西勾勒了一下，然后将自己第一期要完成的目标也确定了一下，最后定了一下关于地名引擎的技术基础。我们实验室是做应急方向的，所以我们做的地名引擎其主要的还是围绕着应急。关于这个系统我前面的工作主要是将把他当做一个系统来完成，解决问题的方法也主要是从工程的角度来思考（说句实话，在实验室做研究我实在是不怎么感兴趣，因为……）。第一期的主要目的就是将实验室目前的数据以地名为中心展现出来，其主要的开发的环境： OS:ubuntu8.10 开发语言:java 第三方工具:htmlparser、lucene 2.4 从目前的角度上来说，从网上爬取过来的数据相对来说都比较简单，所以数据抽取部分的工作相对来说就比较简单了。前天自己花了点时间，大概的分析了一下系统的基本功能，根据自己的一些理解之后大概的确定了一下程序的主要框架结构，然后自己用java代码写了一下程序的框架结构。从设计模式的角度来思考的话，目前自己主要是参考了观察者模式。计划在下周六能够直接用lucene将地名的索引先创建出来，然后根据用户输入的地名信息，将把介绍地名的相关数据先展现出来。不过这里面可能会出现一些问题，哪就是搜索条件的扩展问题，目前关于这个问题的解决办法还没有想出来。 现在没有拿到完全的数据，至于根据一个地名到底需要展现多少信息目前来说还确定不了（不知道这个是不是就是他们博士们在讨论的不确定性分析）。为了保证数据展现的精确性，所以在地名处理方面要做的工作还是很多的，比如：如何在一个案例中，描述的信息不够完备的情况下，能比较准确的描述事件发生的地点信息等。 今天只是一个开始，今后将自己在开发地名引擎遇到的相关问题和自己一些思考总结下来，希望能够得到各位高手的指点。]]></description>
		<wfw:commentRss>http://www.rushcj.com/laomi/archives/169/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->
