我应该为我的MSc创建一个GIS应用程序,我想知道什么是最好的免费和(最好)开源技术?用于开发此类应用程序的编程语言是什么?
已知的选择是:数据库:PostgreSQL(PostGIS)(建议其他)
编程语言:PHP,Python,Java,...(建议其他)
框架:GeoDjango(如果使用Python或Jython),(建议其他)
客户端用户界面:JavaScript(OpenLayers),Flex,(建议其他)
服务器:Mapserver,Geoserver,Mapfish,(建议其他)
其他注意事项:Hibernate Spatial,支持移动GIS,(建议其他)
答案 0 :(得分:9)
afaik:Web应用程序的最佳选择是使用gvSIG(http://www.gvsig.org)准备数据,将数据托管到postgresql / postgis(http://www.postgresql.org,http://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)
当时没有很多替代方案可以构建基于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)}或GeoServer等UMN MapServer( - T)-Server一起使用。
也许普通的旧Shapefile格式符合您的要求,您不需要数据库后端。
编程语言:
我建议使用您熟悉的语言。有许多可用的语言绑定,我敢打赌你的语言也支持。如果你从零开始到英雄,我会建议Java,因为它很容易学习,并且有很多维护良好的开源项目可用。
<强>框架:强>
我无法建议单个框架,因为它们在特定领域具有所有特殊功能和优势...如果您只需要某些内容来转换文件格式或坐标而不显示它们,我为什么要建议您使用可视化工具包。我已经提到了我的答案。如果使用C#,MapWindow6和DotSpatial可能会很有趣。
<强> 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。