GIS应用程序开发指南

时间:2009-06-28 07:44:18

标签: gis esri ogc opengis

我应该为我的MSc创建一个GIS应用程序,我想知道什么是最好的免费和(最好)开源技术?用于开发此类应用程序的编程语言是什么?

已知的选择是:数据库:PostgreSQL(PostGIS)(建议其他)

编程语言:PHP,Python,Java,...(建议其他)

框架:GeoDjango(如果使用Python或Jython),(建议其他)

客户端用户界面:JavaScript(OpenLayers),Flex,(建议其他)

服务器:Mapserver,Geoserver,Mapfish,(建议其他)

其他注意事项:Hibernate Spatial,支持移动GIS,(建议其他)

7 个答案:

答案 0 :(得分:9)

afaik:Web应用程序的最佳选择是使用gvSIG(http://www.gvsig.org)准备数据,将数据托管到postgresql / postgis(http://www.postgresql.orghttp://postgis.refractions.net),发布一个使用MapServer(http://mapserver.org/)的WMS / WFS服务,然后使用openlayers(http://openlayers.org)显示您的数据。 这个解决方案非常适合我的经验。 一个很好的方法是使用MapFish(http://trac.mapfish.org/trac/mapfish/wiki)一个webgis框架,它在内部使用extjs和openlayers,但简化了开发。

答案 1 :(得分:2)

您是否可以将Google地图嵌入到网络应用程序中?这将是最简单的解决方案......

对于开源GIS,请参阅Wikipedia's list of open source GIS,它非常完整。

来自维基百科的粘贴:

开源GIS软件的开发 - 在软件历史方面 - 与1978年出现第一个系统的悠久传统。现在有许多系统可以覆盖地理空间数据处理的所有部门。

以下开源桌面GIS项目在Steiniger和Bocher(2008/9)中进行了审核:

gvSIG 1.0

GRASS GIS - 最初由美国陆军工程兵团开发,开源:完整的GIS

SAGA GIS - 自动地球科学分析系统 - 混合GIS软件。 SAGA拥有独特的应用程序编程接口(API)和一套快速增长的地球科学方法,捆绑在可交换的模块库中。

Quantum GIS - QGIS是一个用户友好的开源GIS,可在Linux,Unix,Mac OS X和Windows上运行。

MapWindow GIS - 免费的开源GIS桌面应用程序和编程组件。

ILWIS - ILWIS(综合土地和水资源信息系统)整合了图像,矢量和专题数据。

<强> uDig

gvSIG - 用Java编写的开源GIS。

JUMP GIS / OpenJUMP - (开放)Java统一映射平台(桌面GIS OpenJUMP,SkyJUMP,deeJUMP和Kosmo来自JUMP;见[3])

其他:

Capaware rc1 0.1

SAGA-GIS v.2.0.3

Kalypso (软件) - Kalypso是一个开源GIS(Java,GML3),主要关注水资源管理中的数值模拟。

TerraView - 处理存储在关系数据库或地理关系数据库中的矢量和栅格数据的GIS桌面,即TerraLib的前端。

Capaware - Capaware也是一个开源GIS,一个令人难以置信的快速C ++ 3D GIS框架,具有多个插件架构,可用于地理图形分析和可视化。

答案 2 :(得分:2)

几年前(大约6年前),我几乎专门使用MapServer(特别是PHP MapScript)和PostGIS,取得了相当不错的成绩,尤其是在灵活性部门。我制作了生产应用程序(地理定位与分析),我甚至根据这项工作完成了我的硕士论文。我认为,鉴于它们的成熟,这两个仍然是一个不错的选择。

当时没有很多替代方案可以构建基于Web的丰富的互联网GIS应用程序,现在有很多(特别是自谷歌地图上线以来)。

我已经获得了一些与GIS相关的演出,其中一个使用Cartoweb进行展示,这是一个基于PHP-Mapscript的Web框架,它是可扩展的,并且大部分都可以使用。

最佳选择最终取决于您要构建的内容。如果您想要完全灵活地分析显示,地图显示,路由和地理编辑,那么您必须获得可编程的地图服务器。我知道Mapserver可以工作,但很可能GeoServer和MapBuilder甚至Mapnik都可以工作,具体取决于细节。

BTW,关于替代方案,MySQL也有Spatial Extensions

答案 3 :(得分:2)

对于感觉更像“应用程序”而不是带有地图的网页,请查看http://geoext.org/,它将OpenLayers与ExtJS结合在一起。

答案 4 :(得分:0)

很难回答“最佳”工具的问题,因为这取决于您的要求。指出你的需求,我们会找到更准确的答案(正如我所看到的,你前段时间问过,我希望你已经获得了硕士学位)......然而,可能还有其他人对这个问题感兴趣。

<强>数据库:

对于小型桌面应用程序,带有SpatiaLite的Sqlite可能是一个Option而不是一个完整的PostgreSQL / PostGIS Server作为后端。 PostgreSQL是大型应用程序的理想选择,也可以与WFS( - 3)}或GeoServerUMN MapServer( - T)-Server一起使用。

也许普通的旧Shapefile格式符合您的要求,您不需要数据库后端。

编程语言:

我建议使用您熟悉的语言。有许多可用的语言绑定,我敢打赌你的语言也支持。如果你从零开始到英雄,我会建议Java,因为它很容易学习,并且有很多维护良好的开源项目可用。

<强>框架:

我无法建议单个框架,因为它们在特定领域具有所有特殊功能和优势...如果您只需要某些内容来转换文件格式或坐标而不显示它们,我为什么要建议您使用可视化工具包。我已经提到了我的答案。如果使用C#,MapWindow6DotSpatial可能会很有趣。

<强> ClientUI:

桌面或/和浏览器? OS?可能的技术取决于您的要求和环境。如果您不得不使用浏览器(可以显示WebGL)并且想要展示一些最新技术,那么fx Cesium可能会很有趣。

<强>服务器:

您已经提到过最知名的开源服务器,我最喜欢的是GeoServer

其他提示

如果您正在搜索特殊技术堆栈,OGC Website是第一个访问的点。他们在GIS领域定义了许多(不是全部)已知标准,并为每个标准提供了implementations的列表。

答案 5 :(得分:0)

我也想提及 CartoDB 。我已经使用了一段时间了,我觉得它很棒。他们有一个在线网站,对免费帐户有限制,但它是开源的,你可以安装自己的实例。它非常灵活。您可以将数据存储在云PostGIS DB或本地托管的数据库中,然后使用CartoJS或Leaflet等JS库连接到数据库并绘制数据。您可以创建可视化,并将它们嵌入HTML代码中。

This是他们的在线网站。 this is their repo如果您愿意,可以链接到有关如何设置自己的CartoDB实例的说明。

答案 6 :(得分:0)

在网络地图服务器端,值得尝试免费OSGeo MapGuide Open Source或其商业对手Autodesk Infrastructure Map Server