我想在工作中开始制作网络地图,以便按城市绘制一些统计数据。

我有个主意,但我不确定从哪里开始。

是否有确定的资源可以提供有关如何执行此操作的逐步指导?

#1 楼


该问题已转换为社区Wiki,并且维基百科已锁定
,因为它是一个寻求答案列表的问题的示例,并且似乎很受欢迎,可以防止其被关闭。
应该视为特例,不应将其视为此问题或任何Stack Exchange网站上鼓励的问题的类型,但是如果您希望提供更多内容,然后可以自由编辑该答案。
可以选择是否使用带地图服务器组件的解决方案。服务器解决方案当然支持更多的数据和更复杂的应用。允许您将图层导出到网络地图。更新(基于汤姆·查德温的评论):
qgis2leaf和qgis-ol3现在已合并到qgis2web中。

中间的一个选项是QGIS Cloud,一个托管的QGIS Server选项:您只需准备本地项目,然后将其发布到网络上,您可以在现成的查看器中找到它。他们有免费帐户,最多可以存储一定数据量。因此,如果这对您来说是一个问题,那么您就不需要自己的服务器。

如果您要运行自己的开源服务器,则可以从去年的FOSS4G上的Geoserver简介开始:http: //workshops.opengeo.org/geoserver-intro/。所涉及的工具通常是Geoserver,PostGIS和OpenLayers。
启动成本是您的工作时间加上托管费用。

不知道用例就很难估计部署时间。

#2 楼

宾夕法尼亚州立大学有一个Open Web Mapping类。足以教您网络映射的工作原理以及所涉及的技术。该类中使用的大多数(如果不是全部)工具都是免费的,因此您的成本不成问题。这是目录:
与课程材料的链接
https://www.e-education.psu.edu/geog585/node/508

课程0:方向
第1课:开放式Web映射简介
第2课:Web映射服务器(WMS)
第3课:Web功能服务器(WFS)
第4课:可扩展标记语言(XML)
第5课:高级Web地图服务器
第6课:地理标记语言(GML)
第7课:重新审视WFS
第8课:构建Web映射应用程序
第9课:构建瘦自定义Web映射客户端

玩得开心:)

评论


那门课真是高达2772美元。对于那些只想探索GIS和Web Maping外壳的人来说,这当然不是一个选择。

– jar
1月22日9:56

如果在发布答案时免费且开放。显然,它现在不再免费。

– R.K.
1月24日13:11

您可以为学分课程付费,但仍可在此处获取材料。我强烈推荐。 e-education.psu.edu/geog585/node/508

–本
9月2日13:13



#3 楼

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.html故事

最佳之一:
http://tinyurl.com/England-Deprivation-Mapped

评论


Google Mymaps是否是Google Fusion Tables的实现?似乎是相似的,其中MyMaps是基于浏览器的,而Fusion Tables是基于服务器的。

–sabre23t
16-09-21在3:06

Google Fusion Tables自2019年12月起弃用。developers.google.com/maps/documentation/javascript/reference/…

–朱拉(Juraj murcko)
1月23日9:09

#4 楼

那里有很多选择,而且已经有很多不错的答案。尚未列出的我最喜欢的两个选择是CartoDB和MapBox。两者都提供基于Web的托管和数据可视化以及一些非常精美的工具,价格从免费开始。

使用台式机软件进行数据设置将使您受益。对于桌面部件,ArcMap和Quantum GIS都是不错的选择。

我想说MapBox的优势在于使用精美,易用的模板以及易于使用的用户界面元素制作精美的Web地图。 MapBox需要一个名为TileMill(也是免费的)的桌面程序,该程序使用与CSS非常相似的样式界面。

CartoDB的优势在于它通过SQL API公开了PostGIS的根源。

这两个都可以单独使用,也可以与其他JavaScript映射库(例如Leaflet,Google Maps,OpenLayers)结合使用。

无论您决定使用哪种平台开始使用Web映射,您一定会从学习一些javascript中受益。 Codecademy是一个很好的起点(也是免费的!)。

评论


为了使事情变得更加简单,“有一些工具可以将ArcGIS和QGIS项目直接导入Tilemill”

– RyanKDalton
2013年3月26日15:07



理解MapBox和CartoDB的关键是价格(地图视图,数据量)以及要显示的数据量。 CartoDB使较大的数据集更易于管理,而我建议将MapBox用于较小的项目。 Leaflet是最简单的JavaScript映射库。

–扎克
13年11月6日在18:16

#5 楼

我还参加了一个会议,他们介绍了OpenGeo套件,该套件是OpenLayers,GeoServer,GeoExt和PostGIS的堆栈。他们提供“企业版”(付费支持版本)或“社区版”(免费)版本。
(更新)OpenGeo Suite现在是Boundless Suite。

另一个软件包在会议上演示的是GeoMoose,它是MapServer和OpenLayers的堆栈。想在测试机器时在机器上安装一堆东西。它预先打包了许多不同的开源GIS软件包,包括Web映射工具。

#6 楼

编辑

由于这个问题和答案的普及,由于过去几个月来提供商和API的变化,我在此帖子上添加了一些内容的编辑。

< br API的选择与您的项目的范围和目的有关,更不用说您的预算,如果您实际上想使用某些特定功能。另一个主要警告是您的Web开发经验以及您喜欢或感兴趣的语言。

我认为回答您问题的最佳方法是为您提供一个不错的API清单。这是我想到的三个。这些绝不是全部!

ArcGIS

API:


JavaScript
Esri Leaflet

Silverlight(请参阅有关最新发行说明的博客文章)

Flex(请参阅有关最新发行说明的博客文章)
.NET
.. .and more(请参阅此处)

优点:


Web AppBuilder使创建Web地图应用程序对于不熟悉Web开发的人非常简单
易于使用的应用程序构建器(Flex,Silverlight和JavaScript,请牢记弃用计划)
广泛的在线论坛(大量的Exchange交流文章)
在ArcGIS堆栈中提供了许多解决方案几乎不需要开发工作,ArcGIS也是及时部署解决方案的理想选择。

许多解决方案的GitHub存储库

缺点:



价格(不是用于API的价格,而是更多信息,因此,如果要发布自己的数据,请参见ArcGIS Onl ine)
自定义应用程序代码可能很麻烦

摘要:

ArcGIS为Web GIS产品提供了很多功能,并且有很多资源可以帮助您道路。只需了解要发布自己的数据时遇到的潜在成本即可。

Google

API:


JavaScript
移动版(Android,iOS)



到目前为止,它是Web映射中最知名的名称
扩展的JavaScript API


许多在线示例
最近,Google发布了其定价和计划,这是所提供服务的重要细分

缺点:


潜在的许可问题(请阅读服务条款)

对网络服务的限制

摘要:

Google在市场上享有盛誉,并且具有相当可靠的在线服务。只要确保了解其用法的来龙去脉,即可避免踩踏任何合法的脚趾。在这方面,新的“定价和计划”页面非常有用。

开放源代码

API(全部基于JavaScript):


传单
OpenLayers
GeoServer



非常易于使用且完全免费
不断增长的API
>
不断增长的开发人员基础都一直在发布自定义插件

面向初学者的教程

缺点:


官方支持不是众所周知,但所涉及的社区不仅有帮助(也许比商业GIS支持还要好)。

摘要:任何想测试Web GIS的人。通过社区中每天进行的更改和增强,开源可能是满足您的地理空间需求的廉价方法。


正如我所说,这并不是您拥有的所有选择,但是至少现在有一个帖子,其中包含供您自己和其他人使用的链接,以熟悉Web GIS世界中的一些主要参与者。

评论


好评论!您要更新吗?

– Fjellrev
17年2月17日在11:54

@Fjellrev-如果您有任何建议,我当然可以更新该帖子,或者可以针对该帖子缺少的内容提供一些指导。老实说,过去几年我主要专注于Esri技术,我什至不知道在这个领域中发生过许多更新。最终,我仍然觉得上面的内容提到了该领域的重磅炸弹,并提供了每个链接的最新信息。同样,如果您有任何建议,我会很乐意添加它们,只要它们适合主题即可。

–evv_gis
17年2月17日在14:54

#7 楼

看来您已经在上述问题中获得了开源答案。如果您的公司有预算,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 / zh-CN / webapi / silverlight / index.html

当前,似乎Web编程的趋势正在从需要插件且特定于供应商的解决方案(上)转向更开放的源代码和基于标准的框架。 ESRI包含Javascript API:

Javascript:http://help.arcgis.com/en/webapi/javascript/arcgis/

如果您看一下在这些API网站上,文档非常好。此外,论坛还提供社区帮助以解决特定问题。通过ESRI的技术支持也非常好。因此,这取决于价格和资源,如果您已经拥有这些应用程序或有预算,那么这是一条绝妙的途径,如果没有上述开源解决方案值得研究。

评论


自发布此答案以来,Esri已发布了ArcGIS Online,这可能消除了对本地ArcGIS Server和SDE的需求。有免费的开发人员计划可以上手

–斯蒂芬·李
2014年10月10日,下午3:14

#8 楼

如果您只想为可行性研究提供原型,以展示您的老板,这是我大约一年前要做的,那么对于后端,我建议您选择Geoserver,因为它的用户界面友好,并由一些人支持简单的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可以提供的一切。但是后来我成为有偏见的FOSS fanboi :)

评论


看看P.Mapper(pmapper.net)和GeoMoose(geomoose.org),使用您自己的数据进行设置非常“容易”,您可以在装有MS4W的Windows机器上进行设置,然后随着进度的进行,您可以转向Linux设置。我对p.mapper的初始步骤进行了概述,不过如果您感兴趣的话,它是西班牙语的。

–jdeltoro1973
2011年4月5日15:43

#9 楼

您可以查看MangoMap www.mangomap.com。

您应该能够使用可用的工具来创建所需的地图。

它是托管且免费的,因此部署仅需很少的时间和精力。

#10 楼

对于您建议的功能,我将看看什么是最直接,最容易安装的堆栈可以满足您的需求。该软件说“您可以快速,强大或廉价。选择两个。”绝对适用于此。只需将shapefile作为数据存储直接上传到GeoServer即可,这要简单得多。如果不打算使用该功能,那么我来看看Leaflet,根据我的经验,Leaflet对于新用户的学习曲线要​​少得多。需要将应用托管在您自己的服务器上,那么您可以查看其中的一些托管选项,因为从投资开始您可以获得更多回报。使用MangoMap或GeoCommons,您最终可能会为用户得到一张优质的地图,而无需编写任何代码。看一下CartoDB和MapBox。如果您想了解所有这些托管平台的更多信息,我就该主题写了一本免费的电子书,其中提供了选择一个主题所需的所有详细信息。 >

评论


您的免费电子书链接已损坏,因为Domaine nae正在出售。您可以编辑它并更改与保管箱或其他网站的链接吗?

– GeoStoneMarten
19-09-16在9:25

#11 楼

开发Web地图时,有很多地方可以开始。网络。在此站点上,还有其他问题可以回答,这些问题将为您提供有关可用平台之间差异的宝贵见解。解决您的业务需求。您将如何在地图上绘制数据?数据将如何更新?谁将使用这个网站?他们将如何处理?尽早做出这些决定将有助于您组装零件,或做出有助于实现目标的扩展选择。 。 选择两个。”它的正式定义为“项目管理三角”,它描述了成本,进度和范围之间的平衡,以带来质量。

#12 楼

在数据库方面工作了很多年之后,我最近也开始了Web映射之旅。

真正帮助我的是学习基本的编程原理,使用MapBasic for MapInfo(或者我假设使用Python作为esri人群)确实帮助我了解了计算机是如何“思考”的。这是学习编程的一种非常有趣且直观的方式。它可以带您从“ Hello World”示例到完整的功能和交互式程序。学习曲线是渐进的,并且了解到有些人对此有天赋,而其他人(例如我)却不是。

第二条建议是安装GeoServer并查看演示请求了解Web服务的结构及其工作方式。查看图层预览,以了解Javascript和HTML如何一起运行。您可以从字面上复制该“图层预览”代码(查看页面源代码),将其保存在某个地方,然后开始修改。如果您决定使用JavaScript,那么JS Fiddle也非常好。

#13 楼

如果您是Java程序员,请看一下Geomajas。然后可以添加额外的图层等。

评论


GIS开发人员似乎是JavaScript的忠实拥护者,几乎找不到基于Java的Web应用程序。

–阿赫洛耶斯
13年8月20日在14:05

#14 楼

您可以将OpenLayers用于客户端。它稳定,简单,并且有大量的示例,介绍了如何使用WFS(在您的情况下连接到PostgreSQL)等。对于Geoserver,OSM将其用于渲染。

您也可以看看GeoExt提供了用于构建地图的extJS小部件。 geoext再次使用OpenLayers进行地图渲染。

还有一些基于PHP的框架使用MapServer(OpenLayers已经支持),如GeoMoose,CartoWeb等。可以决定整个Web页面的设计,而与运行具有默认模板的MapScript绑定的php框架不同,我发现管理如此大的代码库并不容易。

#15 楼

html,css和javascript是大多数任何Web开发(包括Web映射)所需的三项技能。学习这些语言的资源足够。 GIS Stack交换问题“如何开始Web映射”中很好地涵盖了从何处开始学习如何开发Web映射应用程序的主题?经验就是mapbox。您可以无需任何编码即可生成Web地图,尽管我认为如果不使用javascript或python之类的脚本语言,就很难生成与示例中所用的网络地图一样复杂且具有交互性的Web地图。

#16 楼

我使用leafletjs,我认为这非常简单。它基于javascript,可以使用各种数据源绘制要素。基本上,您将地图代码插入.html文件,然后查看该文件。我无法评论其他API,但我认为Google和Openlayers一样简单。

此外,还有诸如MapBox之类的服务,它们不需要您托管html文件,而只需将数据上传到其中即可。

#17 楼

我认为使用qgis + qgis2leaflet插件的最简单方法。您可以编辑qgis中所需的任何内容,而不是导出到传单并上传到您的Web服务器。 />数据库管理员:navicat
网络服务器:基本VPS
webgis软件包:boundlessgeo geosuit(包含:postgresql / postgis,
geoserver和geoexplorer)

geoexplorer我将使用传单javascript,因为它看起来更好并且运行更顺畅...但是要花一些时间将一些代码复制/粘贴在一起。

#18 楼

需要注意的重要一点是,Web-Gis是一个广阔的领域,并且已经在多个项目和库上完成了许多工作以帮助实现这一目标。因此,我们需要查看是否有可以重用的内容,而不是从头开始。

坏消息是php中没有流行的用于Web映射的库/应用程序。好消息是您可能不需要。

我建议您首先尝试了解WebMapping,并了解已经存在的项目和库。为此,您可以参考以下问题:



如何启动Web映射?

了解Web映射工具

寻找对开发人员友好的Web gis

一旦您了解了可用的选项,则应阐明您的要求。查看您的问题,您有非常基本的要求:
在地图上显示宗地
允许查询,
获取宗地的属性并根据查询结果向用户显示,或当用户单击它时。大量数据。

我建议您使用Geoserver / OpenLayers解决方案,前提是您可以使用JavaScript。如果您的数据全部位于功能的属性中,则甚至可能不需要任何php代码。

评论


我对JQuery和其他Jscript库很满意,之前也接触过ExtJS。一个问题,如何在地图上绘制我的区域以及如何将其导出到数据库?我是否需要完全依赖于地图所包含的内容,或者可以让我在其上进行绘制?如何实现的?

–丘吉尔
13年5月15日在9:12

如果您的宗地数据可能是shapefile文件或其他格式的文件,则可以将其显示为wms图层,位于Google Maps /其他基础地图之上。此WMS层可以由Geoserver / mapserver提供服务。此外,您始终可以使用Vector图层绘制新要素。

–德瓦塔塔·滕舍
13年5月15日在10:33

#19 楼

Leaflet是OpenLayers的一个不错的轻巧替代方案,Leaflet是流行的用于Web映射的最大的JavaScript库。它确实需要自定义编码,但数量不多,并且比OpenLayers易于使用。

#20 楼

在决定Leaflet和OpenLayers之前,可能值得看看即将发布的版本,该版本有望清理API和提供更好的文档:

OpenLayers 3是对库的全面重写,目标是HTML5和CSS3功能。该库将继续为OpenLayers 2.x的投影,标准协议和编辑功能提供广泛的支持。该库的新版本将着重于性能改进,更轻便的构建,更漂亮的视觉组件,改进的API等。一些主要的亮点是:
- - - - - - 8< - - - - - - 

一个新的代码库:这为清理OpenLayers中的某些“笨拙”的工作方式提供了机会。该团队还将使用新的API设计进行创建,这将使所有人都可以使用。使工具包脱颖而出不仅是实际代码。

http://openlayers.org/

#21 楼

我将从Google Maps API开始。它的自由和易于使用。它使用Javascript,可以通过许多好的资源来学习。如果您是JS的新手,我会推荐Codecademy。

那里有许多免费的数据源,可以通过多种方式(KML,数据库,GeoRSS等)将其合并到Google Maps中。大多数州和许多大学都有免费的数据存储区,可以将其合并到您的地图中。

我最喜欢的Google Maps示例网站之一是Google Maps Mania。有很棒的地图示例,展示了此API可能实现的功能。

#22 楼

GeoPHP可能值得一看。


GeoPHP是一个用于进行几何运算的开源本机PHP库。它完全用PHP编写,因此可以在共享主机上运行。它可以读写各种格式:WKT(包括EWKT),WKB(包括EWKB),GeoJSON,KML,GPX,GeoRSS。它适用于所有简单特征几何(点,线串,多边形,GeometryCollection等),并可用于获取形心,边界框,面积以及各种其他有用的信息。
您可以通过GEOS扩展(假设您具有安装GEOS的管理员权限)使用它。


使用GEOS,您可以获得完整的openGIS功能在PHP中,例如Union,IsWithin,Touches等。这意味着应用程序获得了在所有环境中均可使用的有用的几何运算“核心集”,并为安装了GEOS的环境提供了“扩展集”运算。 >

#23 楼

好吧,自定义PHP脚本可能是一个更强大(更简单)的解决方案。毕竟,空间数据只是数据库中的行,可以像往常一样查询它们。不需要繁琐的服务器GIS软件和/或可怕的OGC筛选器语法。
如果我不愿意,我会将数据存储在具有PostGIS扩展名的PostgreSQL数据库中,编写PHP后端以查询数据库并检索数据GeoJSON格式(请参见本要点)和基于OpenLayers的前端Web应用程序-比Google Maps API更加灵活,但如果需要,您仍然可以使用Google基本地图。

评论


尽管此方法行之有效,但它会变得笨拙且繁琐,并带有大量数据(如县/区的包裹)。

–德瓦塔塔·滕舍
13年5月15日在10:30

#24 楼

要寻求选择的帮助,ArcGIS Online的替代问题以及哪些书,期刊,电子资源对于扩展地理信息知识最有价值?学习资源问题。

Web映射成本包括托管(为网站付费)和服务器存储空间(如果您使用映射服务,请查看MapBox定价和CartoDB每月定价)。最终,了解Web开发对于创建地图非常重要。

#25 楼

好吧,您可以使用几个映射库。

第一个(也许是最著名的)应该是Google Maps API,但是我认为如果您相对较新,这可能会非常复杂。 Web映射。

我建议您看一下Leaflet.js或Mapbox.js。 Mapbox.js是在考虑Leaflet的基础上构建的,并且Mapbox提供了一些出色的教程,介绍了您可以使用Mapbox.js完成的各种任务。 Leaflet还提供了一些示例和资源。

此处有一些示例的特定链接,这些链接应有助于引导您朝正确的方向前进。


Mapbox弹出窗口
Leaflet Quick
入门指南
信息
windows-Google Maps API


#26 楼

如果需要单击国家的地图并弹出图像,则可以查看链接到外部数据的Mapbox示例。

您可以了解代码在项目中的JSFiddle如何交互

如果您需要有关Mapbox的更多文档,可以阅读其Mapbox指南,或使用“示例”部分深入研究代码

#27 楼

我是一个新的webmapper,被斯科特·默里(Scott Murray)的Web数据可视化介绍。他的电子书可以在这里免费阅读:http://chimera.labs.oreilly.com/books/1230000000345/。它是针对“非编码器”的,具有非常丰富的信息,并且具有许多动手示例。

#28 楼

您可以使用UMN Map Server。在这里,您可以使用PHP脚本(称为地图脚本)。这是基于Apache服务器的。如果需要数据库,则可以使用具有空间扩展的MySQL或具有postGIS的PostgreSQL ...