2009-06-28 53 views
17

我应该为我的硕士创建一个地理信息系统应用程序,我想知道什么是开发最好的免费和(最好)开源技术?用什么编程语言来开发这样的应用程序?地理信息系统应用开发指南

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

编程语言:PHP,Python和Java的,...(建议等)

框架:GeoDjango内置(如Python或Jython的使用),(建议等)

客户端UI:JavaScript的(的OpenLayers),Flex的,(建议等)

服务器:Mapserver的,利用Geoserver,Mapfish,(建议等)

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

+0

为完整性也请参阅http://stackoverflow.com/questions/3180793/gis-for-the-web/3202994#3202994;) – Redlab 2010-07-08 15:30:17

+1

您可能会发布此问题在这里:http://gis.stackexchange.com/ – Beachwalker 2013-02-11 22:21:29

回答

2

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

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

粘贴:

的开源GIS软件的发展有 - 软件的历史条件 - 有着悠久的传统与第一系统在1978年众多系统的出现,现在已可涵盖所有部门地理空间数据处理。

以下开放源代码桌面GIS项目在Steiniger和Bocher审查(2008/9):

gvSIG 1.0

GRASS 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和科斯莫从JUMP出现;参见[3])

其他:

Capaware RC1 0.1

SAGA-GIS诉2.0.3

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

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

Capaware - Capaware也是一个开放源码GIS,一个令人难以置信的快C++三维地理信息系统框架与地理图形分析和可视化的多插件架构。

+1

即使问题没有明确说明的话,我想在这里亲爱的未知要建立一个Web GIS应用,你别说不包括其替代品。 – 2009-06-28 08:31:49

2

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

当时并没有很多的替代品来构建丰富的基于Web的互联网地理信息系统应用,现在有相当多的(尤其是因为谷歌地图去住)。

我从那里得到了一些GIS相关的演出,其中一个使用Cartoweb进行显示,这是一个基于PHP-Mapscript的Web框架,它可扩展并且大多可用。

最好的选择最终取决于你有什么打算建立。如果您希望在分析显示上具有完全的灵活性,映射显示,路由和地理编辑,那么您必须获得可编程的地图服务器。我知道Mapserver的作品,但很可能GeoServer和MapBuilder甚至Mapnik都可以工作,具体取决于具体情况。

顺便说一句,关于替代品,MySQL也有Spatial Extensions

9

据我所知:一个Web应用的最佳选择是与gvSIG(http://www.gvsig.org)准备数据,托管数据移植到PostgreSQL/PostGIS的(http://www.postgresql.orghttp://postgis.refractions.net),发布与地图服务器一个WMS/WFS服务(S)(http://mapserver.org/ ),然后使用openlayers(http://openlayers.org)显示您的数据。 这个解决方案完美适合我的经验。 一个不错的方法是使用MapFish(http://trac.mapfish.org/trac/mapfish/wiki)一个webgis框架,它在内部使用extjs和openlayers,但简化了开发。

2

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

0

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

数据库:

对于小尺寸的桌面应用程序sqlite的有SpatiaLite可能是一个选项,而不是一个完整的PostgreSQL/PostGIS的服务器作为后端。 PostgreSQL是大型应用程序的不错选择,或者与WFS(-T) - GeoServerUMN MapServer等服务器一起使用。

也许简单的旧Shapefile格式确实符合您的要求,并且您不需要数据库后端。

编程语言:

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

框架:

我不能提出一个框架,因为它们在特定领域的所有特别capabilties和优势?为什么我建议你一个可视化工具包,如果你只需要一些转换文件格式或坐标而不显示它们。我已经在我的回答中提到了这一点。如果使用C#,MapWindow6DotSpatial可能会很有趣。

ClientUI:

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

服务器:

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

其他提示

如果你正在寻找一个特殊的技术堆栈的OGC Website是参观的第一个点。他们在GIS领域定义了许多(并非全部)已知标准,并为每个标准提供了一个implementations的清单。

0

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

This是他们的在线网站。 而this is their repo链接到如何建立自己的CartoDB例如,如果你喜欢的指令。