随笔分类 -  GIS

1

关于GIS的技术,工具和随想。
扩展GeoServer数据源
摘要:今天我们来讲讲怎么扩展GeoServer(简称GS)的数据源。大家都知道,GS支持多种数据源,而且都提供了友好的界面供操作。下面我们就来简单介绍一下,如何把自定义的数据源增加到GS中,让我们可以在统一风格的界面上愉快的操作。要完成这个任务,需要如下四个步骤(以矢量数据为例):1 创建一个类实现接口... 阅读全文

posted @ 2014-07-23 08:52 索夫特威尔 阅读(6393) 评论(2) 推荐(1)

如何实现复杂的导航功能
摘要:本文要求读者具备如下知识和技术背景:1 熟悉Java开发,知道如何正确的编译运行Java代码;2 知道GIS的基本概念,知道地图导航的基本概念;3 对GeoTools有一定的认识。一开始先来明确我们的任务:在基本的路径查询基础上1 实现单行道限制2 实现左右拐弯限制3 实现动态路况限制4 选择最短距... 阅读全文

posted @ 2014-07-18 16:16 索夫特威尔 阅读(3427) 评论(2) 推荐(4)

使用GeoTools遇到的两个小问题:nvarchar类型字段无法识别,主键字段无法识别
摘要:问题一,无法识别nvarchar字段。版本,2.7.4及以前。问题描述:数据库中定义了nvarchar字段,但是GT没有识别。原因是2.7.4及其之前版本的Sqlserver扩展忽略了nvarchar类型,导致程序获得数据库字段时忽略该类型字段。这个问题已经被提交并且得到解决,具体见http://jira.codehaus.org/browse/GEOT-3609。解决方法:自己手动增加识别代码,见org.geotools.jdbc.SQLDialect.registerSqlTypeToClassMappings(Map<Integer, Class<?>>),或者下 阅读全文

posted @ 2013-01-02 16:55 索夫特威尔 阅读(1209) 评论(0) 推荐(0)

WebGIS最佳实践4 使用pgRouting实现最佳路径搜索
摘要:下载代码 我在WebGIS最佳实践-2 在WebGIS程序中实现路径分析中提到过pgRouting,现在来看看这头小象能给我们带来些什么。 先上效果图给大家鼓鼓劲。:》 为了实现以上效果我用jsp和openlayers编写了服务端和客户端,但是本文的重点是介绍pgRouting所以不在这里详细介绍这些这些代码了,大家可以从下载包中找到这两个文件。要使用pgRouting得先安装,我假设大家已经安装了Postgresql和PostGIS。 从这里下载合适的二进制包,我下的是Windows版本,解压缩后把Lib下面的动态库复制到Postgresql的bin目录下,把Share... 阅读全文

posted @ 2012-02-16 14:37 索夫特威尔 阅读(3310) 评论(5) 推荐(1)

WebGIS最佳实践-3 为GeoServer编写漂亮的Style
摘要:凡是用过的人都知道,在GeoServer里面创建美观的Style是一件痛苦的事(如果有人觉得是种享受请不要反驳,当我哗众取宠就是了)。GeoServer直接支持OGC的SLD作为样式(Style)的描述。SLD是用XML描述的,而XML是由许多相互嵌套的“<"和">"搭建的。我很不喜欢手动编写XML,尤其是从空白文件开始编写,这是其一。其二,在GeoServer的Style页面编写Style无法立刻看到效果,经常需要重复几个枯燥的动作才能看到,大大降低了工作效率。这在“所见即所得”肆虐的年代,简直就是大逆不道。本文中我会把我配图的方法和常用的工具拿出来 阅读全文

posted @ 2011-05-14 16:25 索夫特威尔 阅读(4793) 评论(4) 推荐(2)

WebGIS最佳实践-2 在WebGIS程序中实现路径分析
摘要:案例代码下载 问题:如何在WebGIS程序中实现路径(Route)分析。 方案: 先来简单介绍下路径分析,我们经常遇到这样的问题:要去一个什么地方,却不知道怎么走,于是只好问人家,人家会告诉你,向前走多远然后拐弯再走多远,看见个什么建筑过街就到了。这种描述很普遍但是说实话对于空间想象不好的人理解起来实在费劲,所以我往往还要问好几个人才能找到。后来有了Google地图,问题就简单多了,只需点两个点,它就会返回一条很明确的路线,一目了然,虽然有时会有点小错误,但是已经不影响大局了。我们在哪里,该怎么走,这附近有什么我们感兴趣的地方,等等一系列这类问题都是空间位置服务要解决的。路径分析就是空间位置服 阅读全文

posted @ 2011-04-26 10:26 索夫特威尔 阅读(3983) 评论(2) 推荐(3)

在GeoServer中使用“宋体”
摘要:有时候需要在SLD中使用中文字体,例如“宋体”,如果采用默认的SLD,会发现字符集错误,这时可以把SLD的文件头改成<?xmlversion="1.0" encoding="gb2312"?>就OK了。 就这么简单 阅读全文

posted @ 2011-04-15 13:17 索夫特威尔 阅读(1472) 评论(0) 推荐(0)

WebGIS最佳实践-1 为GeoServer增加GP(Geometry Processing)服务
摘要:源代码下载起源:QQ群中一个朋友问我怎么把GP服务增加到GeoServer中,当他描述他的需求时我脑海里大概就有了实现方案,但是要在QQ里把这个方案说清楚确实不太容易,于是我萌生了写一篇文章的念头。进而,我决定开始一个系列就叫“WebGIS最佳实践”,这里当然没有什么“最佳”,这里只有我遇到的,别人遇到的,或者我自己的突发奇想的关于WebGIS的问题,然后我会提供一个解决方案,这个方案可能是我设想的,也可能是别人提出我整理的。如果是别人的我会尽量注明出处。这个系列我会不定期更新,谢谢关注。问题:怎么把长度度量(Length)和缓冲区(Buffer)操作增加到GeoServer中,怎么调用它。方 阅读全文

posted @ 2011-04-14 12:52 索夫特威尔 阅读(3238) 评论(0) 推荐(1)

在Mapnik中显示中文(网上资料整理)
摘要:前提:数据源不能是Shapefile。步骤:1 下载字体2 把字体解压缩到Mapnik的字体文件夹下,我的是“C:\mapnik-0.7.1\lib\mapnik\fonts”3 修改Map文件,在里面增加这样一段1<FontSetname="my-fonts">2<Fontface_name="DejaVuSansBook"/>3<Fontface_name="unifontMedium"/>4</FontSet>4 把TextSymbolizer 中face_name=。。。换成fo 阅读全文

posted @ 2011-03-11 13:51 索夫特威尔 阅读(2046) 评论(3) 推荐(0)

GeoServer源码解析和扩展 (四)文件系统
摘要:上一章我介绍了GeoServer的一些重要的资源以及它们的访问接口,现在来看看它们的保存形式。GeoServer的数据没有保存到数据库,而是文件系统,这让我们的学习轻松不少。默认情况下,GeoServer的数据都会放到一个叫“data_dir”的文件夹下面,虽然你可以自己设置这个文件夹的路径,但是它的内部结果是固定的,如下图 这是2.0.2版本的data_dir,从子目录的名称基本上能够猜测它的作用。“coverages”保存的是影像数据。“data”保存了矢量数据,基本上是Shapefile。“styles”保存的是样式文件,即“*.sld”文件。“workspaces”保存的是工作空间,. 阅读全文

posted @ 2011-02-02 11:14 索夫特威尔 阅读(3763) 评论(2) 推荐(5)

GeoServer源码解析和扩展 (三)结构篇
摘要:上一章我们通过实现一个服务对如何扩展GeoServer有了一定的了解,但是,对于为何要这样做并没有说明,本章我们重点来说说GeoServer的结构,下图来自GeoServer官网(希望没有侵权),它很好的揭示了GeoServer处理请求的全过程。 我们说GeoServer使用Spring框架来构建,这里就可以看到Spring的使用,虚线框中的Restlet就是用Spring引入系统的,每个服务包的“applicationContext.xml”文件里都包含了描述Route映射的信息,例如WMS就有如下片段: <bean id="wmsURLMapping" class 阅读全文

posted @ 2011-01-26 21:13 索夫特威尔 阅读(8680) 评论(2) 推荐(4)

GeoServer源码解析和扩展 (二)注册服务
摘要:先上源码下载 上一章我们介绍了GeoServer源码分析的必要性(这个就见仁见智了)以及诸项准备工作,并且在最后还给出了OWS请求处理流程的伪代码。 这一章我们来看看要注册自己的服务需要做哪些工作。假设我们要为一个物流公司GOODS开发系统,有一个功能是给定起点和终点的城市名称以及包裹的重量返回运费,运费的计算公式如下: 运费(¥) = 距离(千米) X 货物重量(千克) 我们需要知道城市间的距离,这就需要用到GIS系统(当然也可以不用),假设已经部署了GeoServer服务器(个人以为如果要求不高或者钱没有多到烫人,使用这种免费的软件足够用了)。基本设计是这样的,为GeoServer注册一. 阅读全文

posted @ 2011-01-11 21:20 索夫特威尔 阅读(11425) 评论(11) 推荐(4)

GeoServer源码解析和扩展 (一)基础篇
摘要:一 缘起 一直在使用GeoServer,从来没关心它的实现。也是GeoServer设计的实在太好,下载,安装,启动页面,根本不费力。这是其一,其二,GeoServer遵循OpenGIS的开放标准WMS,WFS,WCS,这3个标准涵盖了大部分WebGIS基础应用,一般情况下不太需要在服务端做什么开发了。 那么会不会有不一般的情况呢?如果直接用GeoServer实现业务级别的REST服务是不是会更高效呢?如果搞清楚它的结构遇到奇怪问题时是不是就不必到处求人了呢?如果,也许只是如果,有一天你自己不得不实现一个服务器,今天的学习是不是会有所帮助呢?除去以上原因,难道你就不想知道它是怎么工作的吗?好了, 阅读全文

posted @ 2011-01-05 22:56 索夫特威尔 阅读(14699) 评论(4) 推荐(10)

多边形面上一点的算法
摘要:在GIS中Polygon可以是凹多边形,而且还可以带孔,一般我们把多边形的外轮廓叫做外环(Exterior Ring)把孔叫做内环(Interior Ring)。一个多边形必须且只能有一个外环,可以有若干个内环。所谓多边形上一点(Point On Surface)就是指一个必须落在多边形面上而不是空白处(凹多边形的凹口处和带孔多边形的孔洞里)的点。如下图 很多时候我们需要获得这样的点,例如给多边形加标注时,我们不希望标注显示在多边形的外面。 获得面上点的方法如下: 首先获得一个种子点,一般是多边形的几何中心。然后以此点做横线与多边形的所有环相交,将交点以X分量从左向右排序。此时的交点一定是如下 阅读全文

posted @ 2009-12-03 11:28 索夫特威尔 阅读(1375) 评论(1) 推荐(0)

开放GIS标准OGC之路(4)之 解密Filter
摘要:Filter是一中语言,一种XML实现的语言,这就使得它非常适合于分布式系统。我们接触过的OWS服务都不同程度的使用到它。SLD用它来实现复杂的Rule选择。WFS在所有需要定位操作对象的地方都会使用Filter。这一章我们换一种讨论的方式,我不想再罗列乏味的Tag,然后加上翻译过来的解说。我们应该实实在在的实现一个程序,在实现的过程中完成我们的讨论。 前面的章节我们一直维护着一个WMS服务器“ShapeMapServer”,刚开始我并没有把它当回事,我只是想把它作为一个范例来使用,但是随着话题的深入,这个范例也注定逐渐复杂,功能也慢慢丰富起来。这一章我们将一起来面对这个程序,我们一起来为他增 阅读全文

posted @ 2009-10-22 17:42 索夫特威尔 阅读(3245) 评论(6) 推荐(2)

开放GIS标准OGC之路(3)之 WFS初探
摘要:在"OGC之路(1)WMS总结"中我们讨论了WMS标准。我们可以从WMS服务器很方便的获得指定区域内的地图,但是我们只能获得渲染后的地图。有时候我们希望获得指定图层的Feature数据包括地理坐标和属性,更进一步,当我们需要修改数据源的数据的时候,WMS就不能满足需要了。OGC为我们提供了另外一个标准Web Feature Service(WFS)来对应以上需求。顾名思义,WFS是通过网络操作Feature的服务。它支持客户端对服务器的Feature执行INSERT, UPDATE, DELETE, LOCK, QUERY,DISCOVERY操作。乍一看感觉WFS像是一个数 阅读全文

posted @ 2009-10-15 10:53 索夫特威尔 阅读(5468) 评论(7) 推荐(2)

OGC之路(2) 之 Style之谜
摘要:OGC之路(1)里我们简单介绍了WMS协议,并且实现了一个简化版的WMS客户端,WmsBrowser。我们对WMS的了解已经算是相当多。作为一般的使用者这些已经足够了。在介绍WMS的GetMap方法时我们使用过一个参数Styles,我们设定的是每一个图层支持的Style名称,除此之外我们并没有更多的工作需要做。服务器会根据我们要求的Style来绘制图层。那么这个Style到底是怎么回事呢,除了名称它还有什么秘密是我们不知道的呢。这一次我们将简单介绍一下OGC标准SLD。然后我们会实现一个简单的WMS服务器,我们将会用到SharpMap库。Styled Layer Descriptor(SLD) 阅读全文

posted @ 2009-09-30 11:29 索夫特威尔 阅读(4656) 评论(4) 推荐(3)

OGC之路(1.5) 之 GIS开源工具及其应用
摘要:之所以会有这个中间章节,是因为我希望保持“一文一代码”的风格。但是随后的代码需要用到比较复杂的GIS技术,我提供的代码也将背弃“创新精神”,使用开源工具了。所以有必要在这里对这些工具做个介绍。 SharpMap,一个C#开发的开源GIS库,API简单易用,还有不错的例子可供学习。可惜正真强大的v2版还没发布,不然我都会建议公司,把原来的代码扔掉,直接基于它开发。 ProjNet,一个C#开发的开源地理坐标系库,好像是从SharpMap里面独立出来的,提供了强大的SRS功能,如果比不想完全使用SharpMap,只是需要进行坐标变换,这是个不错的选择。 NetTopologySuite,一个C#开 阅读全文

posted @ 2009-09-28 16:46 索夫特威尔 阅读(3000) 评论(3) 推荐(0)

OGC之路(1) 之 WMS标准学习总结
摘要:一切都源于一年多以前,记得是512之后的不久,老板从国外找来一家专门提供地图业务的公司。他们本来使用ArcGIS作为服务平台,但是后来考虑到每年昂贵的服务费用,决定把业务拿到中国来,结果就找到我们。其实我们连GIS应用的开发经验都没有,不知道老板怎么说的(不愧是老板,要是我只能老老实实说没做过愿意学)把这个活拿到了手。我得简单介绍下我们要做的事情。我们需要维护一套C#的代码(甲方在沿海先找了家公司开发的,然而还是由于维护费用问题又把代码交给我们)。这套代码实话说,基本思想是正确的,可惜没有坚持到底,结果到处都是复制修改的内容。OO的基本原则它几乎都破坏了完了,可以说是反面教材的典范。但是它的. 阅读全文

posted @ 2009-09-27 18:05 索夫特威尔 阅读(7462) 评论(1) 推荐(4)

一起来列出GIS学习和开发的在线资源,我先起个头
摘要:1、OpenGIS Consortium标准,http://www.opengeospatial.org。著名的OGC标准是每个GIS开发者最后都不得不学习的,或深或浅。2、SharpMap,ProjNet,NetTopologySuite,http://www.codeplex.org。开源的GIS工具,参照OGC相关标准和建议使用C#开发。是学习GIS底层技术的极好范例。另外附上主要开发者Morten Nielsen的Blog,http://www.sharpgis.net/,有不少强文。3、OpenLayers,http://openlayers.org/。开源GIS库,采用JS实现,是 阅读全文

posted @ 2009-09-25 18:00 索夫特威尔 阅读(1646) 评论(0) 推荐(3)

1

导航