置顶随笔

[置顶]Python装饰器(Decorator)简介

摘要: Python有许多出色的语言特性,装饰器(Decorator)便是其中一朵奇葩。先来看看一段代码:def deco1(f): print 'decorate 1' return fdef deco2(f): print 'decorate 2' return f@deco1@...阅读全文

posted @ 2015-04-24 21:47 索夫特威尔 阅读(96) 评论(0) 编辑

[置顶]历史事件浏览

摘要: 闲来无事,利用维基百科的数据开发了一个历史事件浏览程序,在这里访问,代码在这里。纯属娱乐,欢迎拍砖。阅读全文

posted @ 2014-11-01 23:01 索夫特威尔 阅读(115) 评论(0) 编辑

[置顶]扩展GeoServer数据源

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

posted @ 2014-07-23 08:52 索夫特威尔 阅读(1364) 评论(1) 编辑

[置顶]如何实现复杂的导航功能

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

posted @ 2014-07-18 16:16 索夫特威尔 阅读(1152) 评论(1) 编辑

[置顶]使用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 索夫特威尔 阅读(432) 评论(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 索夫特威尔 阅读(2053) 评论(5) 编辑

[置顶]WebGIS最佳实践-3 为GeoServer编写漂亮的Style

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

posted @ 2011-05-14 16:25 索夫特威尔 阅读(3512) 评论(4) 编辑

[置顶]WebGIS最佳实践-2 在WebGIS程序中实现路径分析

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

posted @ 2011-04-26 10:26 索夫特威尔 阅读(2604) 评论(2) 编辑

[置顶]在GeoServer中使用“宋体”

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

posted @ 2011-04-15 13:17 索夫特威尔 阅读(812) 评论(0) 编辑

[置顶]WebGIS最佳实践-1 为GeoServer增加GP(Geometry Processing)服务

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

posted @ 2011-04-14 12:52 索夫特威尔 阅读(2144) 评论(0) 编辑

[置顶]GeoServer源码解析和扩展 (三)结构篇

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

posted @ 2011-01-26 21:13 索夫特威尔 阅读(4033) 评论(2) 编辑

[置顶]GeoServer源码解析和扩展 (一)基础篇

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

posted @ 2011-01-05 22:56 索夫特威尔 阅读(6481) 评论(3) 编辑

[置顶]Javascript匿名函数的一种应用:封装

摘要: 在一些Javascript库中可以看见这种写法: (function(){ //所有库代码代码 })(); 说实话,对于js初学者的我来说。这个东西太吓人了,在这些JS库中,这个函数基本上把整个库的所有代码全括起来了,这种写法完全超越了我的常识。难道不应该好好的划分一下吗,难道不应该体现出层次和功能划分吗,怎么会一个函数搞定呢。我一开始完全不敢去细想它的道理。直到使用JS一段时间后,某一天一位同事在闲聊时说起了这个问题,我才知道这个叫匿名函数。匿名函数我并不陌生,C#,Python,Lua中都有这个咚咚。我到网上去查了一下,介绍文章很多,也很详细,但是我心头的疑问却没有得到解决:为什么要这样.阅读全文

posted @ 2010-06-26 23:35 索夫特威尔 阅读(2548) 评论(6) 编辑

[置顶]养成重构的习惯有多重要

摘要: 身为一个维护人员,我每天的工作就是研究产品的代码,修正各种bug,或者添加各种新功能。Martin Fowler在《重构》一书中使用了一个隐喻,“坏味道(bad smell)”。用这个隐喻来形容我目前的处境,那就是我正在粪坑里挣扎。这里充斥着“Copy/Past/Modify”而来的代码。为了实现一个功能而随心所欲添加的成员变量。长达一两千行的函数。几万行的类。到处都是public的成员变量。丰富多彩的编程风格。 这个程序运行起来很漂亮,用户也很满意(据说)。我想作为用户,是不需要关心代码如何如何的。作为老板也是不需要关心代码如何如何的(虽然他声称他很在乎)。那么正真关心代码的人是谁呢,我想.阅读全文

posted @ 2009-12-12 14:59 索夫特威尔 阅读(2929) 评论(41) 编辑

[置顶]开放GIS标准OGC之路(4)之 解密Filter

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

posted @ 2009-10-22 17:42 索夫特威尔 阅读(2612) 评论(6) 编辑

[置顶]开放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 索夫特威尔 阅读(4118) 评论(7) 编辑

[置顶]OGC之路(1) 之 WMS标准学习总结

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

posted @ 2009-09-27 18:05 索夫特威尔 阅读(5017) 评论(1) 编辑

2015年4月24日

Python装饰器(Decorator)简介

正文内容加载中...

posted @ 2015-04-24 21:47 索夫特威尔 阅读(96) 评论(0) 编辑

2014年11月1日

历史事件浏览

摘要: 闲来无事,利用维基百科的数据开发了一个历史事件浏览程序,在这里访问,代码在这里。纯属娱乐,欢迎拍砖。阅读全文

posted @ 2014-11-01 23:01 索夫特威尔 阅读(115) 评论(0) 编辑

2014年7月23日

扩展GeoServer数据源

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

posted @ 2014-07-23 08:52 索夫特威尔 阅读(1364) 评论(1) 编辑

2014年7月18日

如何实现复杂的导航功能

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

posted @ 2014-07-18 16:16 索夫特威尔 阅读(1152) 评论(1) 编辑

2013年1月2日

使用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 索夫特威尔 阅读(432) 评论(0) 编辑

2012年2月16日

WebGIS最佳实践4 使用pgRouting实现最佳路径搜索

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

posted @ 2012-02-16 14:37 索夫特威尔 阅读(2053) 评论(5) 编辑

2011年5月14日

WebGIS最佳实践-3 为GeoServer编写漂亮的Style

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

posted @ 2011-05-14 16:25 索夫特威尔 阅读(3512) 评论(4) 编辑

2011年4月26日

WebGIS最佳实践-2 在WebGIS程序中实现路径分析

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

posted @ 2011-04-26 10:26 索夫特威尔 阅读(2604) 评论(2) 编辑

2011年4月15日

在GeoServer中使用“宋体”

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

posted @ 2011-04-15 13:17 索夫特威尔 阅读(812) 评论(0) 编辑

2011年4月14日

WebGIS最佳实践-1 为GeoServer增加GP(Geometry Processing)服务

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

posted @ 2011-04-14 12:52 索夫特威尔 阅读(2144) 评论(0) 编辑

导航

公告