使用GeoTools读取和绘制Shapefile格式 — (学习GIS【1】)

ESRI Shapefile(shp)是一种美国ESRI公司开发的空间数据开放格式。目前,该文件格式已经成为了地理信息软件界的一个开放标准,这表明ESRI公司在全球的地理信息系统市场的重要性。

 

 


 

 

 

看了一些资料,对其中一句话比较感兴趣 “Shapefile文件不含有拓扑数据结构”

 

【由此带来其他几个问题】

什么是拓扑?

什么文件格式包含拓扑数据结构?

为什么其Shapefile文件不含拓扑数据结构(mapinfo公司的mif/mid文件格式好像也不含有)?

为什么有拓扑数据机构的文件格式要包含拓扑数据结构?

 

找到一些资料,比较简单,但很好的解释了以上几个问题,一下是资料截图

 

什么是拓扑关系

 

 

拓扑数据集和简单要素类

 

上面有点偏题了:P

 


 

 

 

 

因为在自己写得一个GIS框架中需要支持对Shapefile格式的支持,所以才需要读写Shapefile格式

 

因为解析过mapinfo的mif/mid文件格式,所以觉得也不会太复杂,但是因为时间比较紧,所以希望找到能够读写shapefile格式的解决方案,那就省的自己写了:)

 

在网上搜索了半天,找到了GeoTools.

 

 

我是在这个页面找到这个工具的,有兴趣的朋友可以看看,里面有很多关于Gis的软件

 

http://zh.wikipedia.org/w/index.php?title=GIS%E8%BB%9F%E4%BB%B6%E5%88%97%E8%A1%A8&variant=zh-cn

 

 

GeoTools:Geo Tools是自由的基于Java的制图工具包,允许在网页浏览器上交互式浏览地图,而无需专门的服务器端的支持。

 

 

 然后在GeoTools主页下载了四个包(版本是geotools-2.5.5)

 

 geotools-2.5.5-src.zip  geotools-2.5.5-guide.zip   geotools-2.5.5-doc.zip    geotools-2.5.5-bin.zip

 

 

解压完才大吃一惊,里面的源代码数量大大超过我的想象(很多咳)shapefile的读写功能只是其中一小部分

 

看了下资料,geotools的历史已经很长时间,而且这个项目现在还是激活的:)看来这个解决方案应该没有问题了

 

 

 

首先是读取shapefile

http://docs.codehaus.org/display/GEOTDOC/04+How+to+Read+a+Shapefile

我参考是上面的页面,在页面里整个过程有点繁琐,如果想快点把程序,直接打开JBudiler,创建一个新工程,然后把geotools-2.5.5-bin.zip解压后里面的build目录下的所有jar包都包进工程,然后复制上面页面的例子程序直接创建一个测试类就可以跑了

 

 

 有几个警告就不理它了~~~~~~

 

 

 

如何通过GeoTools绘制Shapefile

http://docs.codehaus.org/display/GEOTDOC/09+ShapeLab

主要通过上面这个地址里面的例子,但运行上面页面中的例子程序有点问题,所在在这里记录一下如何解决问题的以做备忘

 

在运行上面例子程序ShapeLab.java时缺少一个JMapPane类,页面中下面的回复好多人都是出现这个问题,这个也做了回复,好像因为新版本没人维护这个类了,所以在2.5.5中没这个类了,以前2.3.X有这个类的,那怎么呢,重新下载2.3.X?

这个办法不太好,好像用老版本毕竟不是太爽,那就只好把这个类下载下来~~

 

 

http://www.koders.com/

 

Koders搜索JMapPanel效果图

 

上面这个网站专门搜索代码的,不错,我在里面搜索到了JMapPanel,还搜索到了JMapPanel依赖的三个类

 

HighlightChangedEvent  HighlightChangeListener  HighlightManager

 

 

 

 

 最后ShapeLab.java终于运行起来了,我读取了一个shp格式文件,运行效果如下:

 

 

这是什么河呢:)很容易猜的到吧~~~~~~~~~~~

 

 

 

 

 

 

 

 

转载自:https://blog.csdn.net/snailjava/article/details/4255156

You may also like...