Answers:
该问题已转换为“社区Wiki”,并且Wiki已锁定,因为它是一个问题的示例,它寻求答案列表,并且似乎很受欢迎,可以防止其被关闭。应该将其视为特殊情况,并且不应将其视为鼓励在此或任何Stack Exchange网站上使用的问题类型,但是,如果您希望向其中贡献更多内容,请随时通过编辑此答案来这样做。 。
您可以选择是否使用带地图服务器组件的解决方案。服务器解决方案当然支持更多数据和更复杂的应用程序。
如果您知道QGIS要创建一次性的数据可视化,我建议使用 QGIS2Leaf或Export to OpenLayers 3,它们都是QGIS的插件,可用于将图层导出到Web地图。更新(基于Tom Chadwin的评论):qgis2leaf和qgis-ol3现在已合并到qgis2web中。
中间的一个选项是QGIS Cloud,它是托管的QGIS Server选项:您只需在本地准备项目,然后将其发布到Web上,即可在现成的查看器中找到它。他们有免费帐户,最多可以存储一定数据量。因此,如果这对您来说是一个问题,则不需要您自己的服务器。
如果要运行自己的开源服务器,则可以从去年的FOSS4G的Geoserver简介开始:http ://workshops.opengeo.org/geoserver-intro/ 。涉及的工具通常是Geoserver,PostGIS和OpenLayers。启动成本是您的工作时间加上托管费用。
在不知道用例的情况下很难估计部署时间。
GeoGATE
链接,GeoGATE与PostGIS和Geoserver很棒,并且包括数百种现成的工具,您可以通过用户友好的控制面板使用数据进行配置
宾夕法尼亚州立大学有一个Open Web Mapping类。足以教您Web映射的工作原理以及所涉及的技术。该类中使用的大多数工具(如果不是全部的话)都是免费的,因此您的成本不成问题。这是目录:
第0课:方向
第1课:开放式Web映射简介
第2课:Web地图服务器(WMS)
第3课:Web功能服务器(WFS)
第4课:可扩展标记语言(XML)
第5课:高级Web地图服务器
第6课:地理标记语言(GML)
第7课:再谈WFS
第8课:构建Web映射应用程序
第9课:构建瘦自定义Web映射客户端
玩得开心 :)
Google Fusion Tables在映射和空间查询方面看起来很有前途
优点:易于设置
缺点:您的所有数据都在Google服务器上(好还是坏?)
http://sites.google.com/site/fusiontablestalks/stories
注意:许多媒体/新闻公司都在使用它-英国《卫报》示例 http://www.guardian.co.uk/environment/datablog/interactive/2011/mar/07/carbon-emissions-public-buildings-map
现在有一个简洁的Fusion Wizard,可以帮助您更快地设置 http://gmaps-samples.googlecode.com/svn/trunk/fusiontables/fusiontableslayer_builder.html
例如:http: //www.latimes.com/news/local/la-me-us-congress-census-map,0,4500533.htmlstory
那里有很多选择,而且已经有很多不错的答案。我尚未在此处列出的最喜欢的两个选择是CartoDB和MapBox。两者都提供基于Web的托管和数据可视化以及一些非常精美的工具,价格从免费开始。
使用台式机软件来设置数据将使您受益。对于桌面部件,ArcMap和Quantum GIS都是不错的选择。
我要说的是MapBox的优势在于,它使用非常棒,易于使用的模板制作了精美的Web地图,并准备好了用户界面元素。MapBox需要一个名为TileMill(也是免费的)的桌面程序,该程序使用与CSS非常相似的样式界面。
CartoDB的优势在于它通过SQL API公开了PostGIS的根源。
这两种都可以单独使用,也可以与其他javascript映射库(例如Leaflet,Google Maps,OpenLayers)结合使用。
无论您决定开始使用哪种平台来进行Web映射,学习某些JavaScript无疑都会使您受益。 Codecademy是一个不错的起点(也是免费的!)。
我还参加了一个会议,他们介绍了OpenGeo Suite,它是OpenLayers,GeoServer,GeoExt和PostGIS的堆栈。他们提供“企业版”(付费支持版本)或“ 社区版 ”(免费)版本。(更新)OpenGeo Suite现在是Boundless Suite。
会议上演示的另一个软件包是GeoMoose,它是MapServer和OpenLayers的堆栈。
您可能会考虑下载OSGEO Live DVD,可以在虚拟机环境中运行它,以防在测试时不想在计算机上安装很多东西。它预先打包了许多不同的开源GIS软件包,包括Web映射工具。
编辑
由于此问题和解答的受欢迎程度,由于过去几个月来提供程序和API的变化,我将在此帖子上添加一些内容的编辑。
API的选择与项目的范围和目的有关,更不用说您的预算,如果您实际上想使用某些特定功能。另一个主要警告是您的Web开发经验,以及您喜欢或感兴趣的语言。
我认为回答您问题的最好方法是为您提供一个不错的API清单。这是我想到的三个。这些绝不是全部!
的ArcGIS
蜜蜂:
优点:
缺点:
摘要:
ArcGIS为Web GIS产品提供了很多功能,并且有许多资源可以一路为您提供帮助。只是要知道在发布自己的数据时会遇到的潜在成本。
谷歌
蜜蜂:
优点:
缺点:
摘要:
Google在市场上享有盛誉,并且拥有可靠的在线服务。只要确保了解其用法的来龙去脉,即可避免踩踏任何合法的脚趾。在这方面,新的“定价和计划”页面非常有用。
开源的
API(全部基于JavaScript):
优点:
缺点:
摘要:
对于想要测试Web GIS的人们来说,开源确实是一个不错的选择。通过社区中每天进行的更改和增强,开源可以是满足您的地理空间需求的廉价方法。
就像我说的那样,这并不是您的全部选择,但是至少现在有一篇文章提供了您自己和其他人的链接,以熟悉Web GIS世界中的一些主要参与者。
看来您已经在上述问题中获得了开源的答案。如果您的公司有预算,ESRI可能是一个很好的选择。需要说明的是,Web映射API本身可免费使用,但是后端ArcGIS Server和SDE会花费您钱。此外,将需要桌面软件来创建要在Web制图应用程序中使用的地图服务。如果您已经可以使用这些资源或可以购买它们,那么我绝对建议您研究一下ESRI解决方案。
这里的好处之一是您可以使用多种语言进行编码。有针对Flex和Silverlight的ESRI专用API:
Flex:http://help.arcgis.com/en/webapi/flex/index.html Silverlight:http://help.arcgis.com/en/webapi/silverlight/index.html
当前,似乎Web编程的趋势正在从需要插件的,特定于供应商的解决方案(上图)转向更加开放的源代码和基于标准的框架。ESRI对此使用了Javascript API:
Javascript:http://help.arcgis.com/en/webapi/javascript/arcgis/
如果您查看这些API网站,则说明文档非常好。此外,论坛还提供社区帮助以解决特定问题。通过ESRI的技术支持也非常好。因此,这取决于价格和资源,如果您已经拥有这些应用程序或有预算,那么这是一条绝妙的途径,如果没有上述开源解决方案值得研究的话。
如果您只是想为进行可行性研究以展示自己的老板而原型,这是我大约一年前要做的,那么对于后端,我建议您选择Geoserver,因为它的用户友好型Web界面,并得到了一些支持简单的shapefile。对于前端,OpenLayers是一个绝佳的选择,网站上有很多示例。无论如何,我都不是网络程序员,但我发现复制/粘贴/调整javascript示例变得轻而易举。我使用UbuntuGIS存储库中的软件包,将所有这些都放置在VirtualBox VM中,以将其放置在一个地方,而不会破坏我的常规开发环境。
对于生产来说,有很多东西要取决于您的用例。对我来说,我最终选择了Mapserver,因为它不像Geoserver那样肿,它在lighttpd Web服务器上像快速cgi进程一样运行。我们需要WFS-T(Geoserver开箱即用),但Mapserver不需要,因此我们使用了tinyows。我们还提供Mapserver支持的coverage(WCS),并且正在考虑将Rasdaman集成为其WCS-T支持。所有这些都由PostGIS数据库支持。
我建议将您的应用程序分解为后端,中端和前端,并阅读每个软件的优缺点。每层可能只有少数解决方案,但是组合起来会增加。
我相信ESRI可以使产品具备上述所有功能,但这会带来成本。如果您的时间不多,那么商业路线可能是正确的选择,但是开源路线正在朝着非常令人兴奋的方向发展,我怀疑最终将超过ESRI可以提供的一切。但是后来我成为有偏见的自由开放源码软件迷
对于您建议的功能,我将看一下满足您需求的最直接,最容易安装的堆栈。软件说“您可以快速,强大或廉价。选择两个。” 绝对适用于这里。
如果您仅打算进行简单的查询(例如识别功能),则PostGIS的功能可能会过大。将shapefile作为数据存储直接上传到GeoServer更加简单。
OpenLayers再次很棒,并具有很多功能,例如支持WGS84和Web Mercator以外的坐标系,但是如果您不打算使用该功能,那么我来看一下Leaflet,根据我的经验,它的功能要少得多面向新用户的陡峭学习曲线。
另外,如果您没有要求将应用程序托管在自己的服务器上的要求,则可以查看一些托管选项,因为从投资之初您将获得更多回报。使用MangoMap或GeoCommons,您最终可能会为用户获得一张优质的地图,而无需编写任何代码。
如果这是您要编写一些代码的项目,那么您也可以看看CartoDB和MapBox。如果您想了解所有这些托管平台的更多信息,我就该主题写了一本免费的电子书,其中提供了选择一个主题所需的所有详细信息。
披露:我是MangoMap的创始人
在数据库方面工作了很多年之后,我最近也开始了Web映射之旅。
真正帮助我学习基本的编程原理,使用MapBasic for MapInfo(或者我假设esri人群使用Python)确实帮助我了解了计算机如何“思考”。
从那里,CodeAcademy真是天赐之物。这是学习编程的一种非常有趣且直观的方式。它可以带您从“ Hello World”示例到完整的功能和交互式程序。学习曲线是循序渐进的,并且了解到有些人对此有天赋,而其他人(例如我)却没有。
第二条建议是安装GeoServer并查看演示请求,以了解Web服务的结构和工作方式。查看图层预览,以了解Javascript和HTML如何协同工作。您可以从字面上复制该“图层预览”代码(查看页面源代码),将其保存在某个位置并开始修补。
W3学校 -具有交互式示例,您可以使用它们并适应您刚刚起步的代码。如果您决定使用JavaScript,JS Fiddle也非常不错。
html,css和javascript是大多数任何Web开发(包括Web映射)所需的三项技能。学习这些语言的资源足够。GIS Stack交换问题“ 如何开始Web映射?”中相当详细地介绍了从何处开始学习如何开发Web地图应用程序的主题。
如果您的编程经验有限,那么开发Web地图应用程序的一种资源是mapbox。您可以无需任何编码即可生成网络地图,尽管我认为如果不使用javascript或python这样的脚本语言,就很难生成与示例中所用的网络地图一样复杂和交互式的网络地图。
需要注意的重要一点是,Web-Gis是一个广阔的领域,并且已经在多个项目和库上完成了大量工作以帮助实现这一目标。因此,我们需要查看是否有可以重用的内容,而不是从头开始。
坏消息是,在php中没有流行的用于网络映射的库/应用程序。好消息是您可能不需要一个。
我建议您首先尝试了解WebMapping,并了解已经存在的项目和库。为此,您可以参考以下问题:
一旦了解了可用的选项,就应该澄清您的要求。查看您的问题,您有非常基本的要求:在地图上显示宗地允许查询,获取宗地的属性并将其显示给用户,无论是查询结果还是当用户单击时。
使用Google Maps可以进行这种工作,但是我不建议这样做,因为当您有大量数据时,使用Google Maps API会很麻烦。
相反,我建议您使用Geoserver / OpenLayers解决方案,前提是您可以使用JavaScript。如果您的数据全部在功能的属性中,则您甚至不需要任何php代码。
在决定Leaflet和OpenLayers之前,可能值得看一下即将发布的版本,该版本有望清理API和提供更好的文档:
OpenLayers 3是对该库的全面重写,以HTML5和CSS3中的最新功能为目标。该库将继续为OpenLayers 2.x的投影,标准协议和编辑功能提供广泛的支持。该库的新版本将着重于性能改进,更轻便的构建,更漂亮的视觉组件,改进的API等。一些主要的亮点是:
------8 <-------新的代码库:这提供了清理OpenLayers中某些“笨拙”的工作方式的机会。该团队还将使用新的API设计进行创建,这将使所有人都可以使用。
高品质的文档:新版本还将在OpenLayers 3.0中提供文档,其中包含新鲜的示例和默认设计。使工具包脱颖而出的意义远不止实际代码。
我将从Google Maps API开始。它的自由和易于使用。它使用Javascript,可以通过许多好的资源来学习。如果您不熟悉 JS,我会推荐Codecademy。
那里有许多免费的数据源,可以通过多种方式(KML,数据库,GeoRSS等)将其合并到Google Maps中。大多数州和许多大学都有免费的数据存储,可以将其合并到您的地图中。
我最喜欢的Google Maps示例网站之一是Google Maps Mania。有很棒的地图示例,展示了此API的功能。
GeoPHP可能值得一看。
GeoPHP是用于执行几何运算的开源本机PHP库。它完全用PHP编写,因此可以在共享主机上运行。它可以读写各种格式:WKT(包括EWKT),WKB(包括EWKB),GeoJSON,KML,GPX,GeoRSS。它适用于所有简单特征几何体(点,线串,多边形,GeometryCollection等),并可用于获取形心,边界框,面积以及各种其他有用的信息。
而且,您可以通过GEOS扩展(假设您具有安装GEOS的管理员权限)来解决这个问题。
使用GEOS,您可以获得PHP,Union,IsWithin,Touches等完整的openGIS功能。这意味着应用程序可以获得在所有环境中均可使用的有用的几何运算“核心集”,以及可扩展的“扩展集”。安装了GEOS的环境中进行操作。
好吧,自定义PHP脚本可能是一个更强大(更简单)的解决方案。毕竟,空间数据只是数据库中的行,可以像往常一样查询它们。无需繁琐的服务器GIS软件和/或可怕的OGC过滤器语法。如果您愿意,我会将数据存储在具有PostGIS扩展名的PostgreSQL数据库中,编写PHP后端以查询数据库并检索GeoJSON格式的数据(请参见本要点),以及一个基于Web的前端Web应用程序。 OpenLayers-比Google Maps API更加灵活,但是如果您愿意,您仍然可以使用Google基本地图。
要寻求选择的帮助,ArcGIS Online的替代问题以及哪些书籍,期刊,电子资源对于扩展地理信息知识最有价值?学习资源问题。
Web映射成本包括托管(为网站付费)和服务器存储空间(如果使用映射服务,请查看MapBox定价和CartoDB每月定价)。最终,了解Web开发对于创建地图将非常重要。
好了,您可以使用几个映射库。
第一个(可能是最著名的)是Google Maps API,但是我认为如果您对Web映射比较陌生,这可能会非常复杂。
我建议看一看Leaflet.js或Mapbox.js。Mapbox.js是在考虑Leaflet的情况下构建的,并且Mapbox提供了一些出色的教程,介绍了您可以使用Mapbox.js完成的各种任务。Leaflet也有一些示例和资源。
以下是示例的具体链接,这些示例应有助于您朝正确的方向发展。
我是一个新的webmapper,被斯科特·默里(Scott Murray)的Web数据可视化介绍。他的电子书可以在这里免费阅读:http://chimera.labs.oreilly.com/books/1230000000345/。它是针对“非编码器”的,非常有用,并且有许多动手示例。
您可以使用UMN Map Server。在这里,您可以使用PHP脚本(称为地图脚本)。这是基于Apache服务器的。如果您想要一个数据库,则可以使用具有空间扩展的MySQL或具有postGIS的PostgreSQL ...