我正在寻找一种小规模,简单的方法来在线(准确地说,是在没有任何现有地图服务器基础设施的市政网站上)在线呈现一个或多个多边形shapefile。现在,我正在使用QGIS进行所有工作,并且我希望保留所有开源资源(没有预算用于任何大型软件投资)。

研究此主题导致压倒性多数许多可能的方法,让我很困惑。我正在寻找的是


能够在主题地图中显示分类的多边形
(-如果可能的话,弹出窗口或能够检索出的信息会很好。属性信息-但这是高度可选的)
我宁愿在QGIS中完成大多数工作(样式等)
OSM,因为基本地图会很好用

到目前为止,自定义OSM基本地图上的地图图块看起来像我正在寻找的东西(还是有更好的解决方案)?创建这些磁贴的最佳方法是什么?

评论

是否必须是基于栅格的(网络图块)解决方案?矢量解决方案可以吗?

一点都不。我只是认为这是最简单的方法(创建图块,创建index.htm或代码块以粘贴到现有网页中,复制到服务器目录中,完成)。我曾经与GMapCreator一起进行过一个私人项目,这是完成工作的一种非常快捷的方法。

您的shapefile中有多少个多边形?如果它小于1000,也许@Mapperz在矢量解上的评论就是要走的路。最简单的解决方案是使用Google Maps API绘制多边形并创建信息弹出窗口-无需创建和存储非交互式平铺图像。地图的平铺图像最适合于高度密集的信息,例如显示卫星图像,道路或人口普查区域的边界。

#1 楼

对于从QGIS开始的简单方法,您可以使用QGIS Mapserver,它可以为使用常规QGIS界面设计的地图提供服务。另外,您可能想使用基于Java的GeoServer,它可能更易于安装。由于这两个程序都是从开放标准提供地图,因此如果您从一个标准开始,并且以后需要进行切换,则无需更改客户端。

一旦您设置了可以提供WMS地图的系统,便可以想要一个客户端前端。我建议使用OpenLayers,因为它非常容易上手并且易于扩展。它可以毫无问题地处理WMS,WMST和OSM磁贴。

最终,您可能需要移动到WMS图层的切片(例如,在合理的硬件上,每分钟开始收到50-100个以上的请求),然后您需要考虑放置切片缓存在地图服务器的前面如果您使用的是GeoServer,则可以使用内置的GeoWebCache,也可以使用TileCache。

评论


我的问题是我目前正在市政当局内担任自由顾问。当地的IT员工头脑笨拙,并试图从他们的计算机中保留各种“可疑”开源材料(我为QGIS进行了长期的战斗)。因此,我真的很想避免将任何解决方案作为“软件”安装在市政府的网络空间上。

– SAnderka
2011年5月19日下午14:08

我梦dream以求的解决方案是我可以自己准备,然后将其复制到他们的网站空间,插入html / JS代码并完成。到底是栅格数据还是矢量数据并不真正重要。无论如何,我是唯一一个了解技术差异的人...其他所有人都关心的是,为我们的公民很好,轻松地介绍我们的数据。

– SAnderka
2011年5月19日下午14:15

您只需要向他们解释,没有软件就无法轻松实现网络映射。当然,您可以在Web服务器上放置一些简单的磁贴,但是它在所有范围上看起来都不太好,它很难维护,并且在市长需要更多功能时很难添加功能。

–伊恩·特顿♦
2011年5月19日下午14:16

因此,我研究了Geoserver(作为Open Geo Suite软件包的一部分),它看起来非常不错。我导入了shapefile,对其进行了样式设置,甚至在本地主机上运行了预览。但是,如何在我的网站空间上在线获取这些地图?我想念什么吗?书签等显然无法使用,因为它们是指我的本地硬盘驱动器。我一直在研究所有可能的教程以及操作方法,但是似乎从未讨论过该主题?有人可以指出我正确的方向吗?

– SAnderka
11年5月22日在16:46



您将GeoServer放在Web服务器上,然后将数据目录从本地计算机复制到远程计算机。

–伊恩·特顿♦
2011年5月22日17:30

#2 楼


能够在专题图中显示分类的多边形(-如果可能的话,弹出窗口或能够检索属性信息会很好-但这是高度可选的)
我更喜欢做大多数QGIS
OSM中的工作(样式等)作为基本地图将是非常好的

所有这些都可以在QGIS和ogr2layers插件中完成。工作流程很简单:


在QGIS中设置数据样式。使用旧的符号系统,因为我在使用New Symbology插件时遇到ogr2layers的问题。


启动ogr2layers插件并定义openlayers设置(例如地图大小,地图控件,底图等) )。这将创建一个包含index.html的目录,并将您的数据层转换为geojson文件。


将该目录上载到Web服务器。



请注意这仅适用于简单的网络地图。要创建自定义底图和其他Web地图功能,请查看iant和Peter的答案。

评论


简单的网络地图意味着它仍然可以缩放和滚动,是吗?听起来,当我回到办公室时应该考虑一下。

– SAnderka
2011年5月19日下午14:19

是的,请参见本示例的how-todownload.essc.org.ph/wcsp2011_geo_workshop/…和结果download.essc.org.ph/wcsp2011_geo_workshop/webmap/eagle_webmap

–maning
2011年5月20日在1:38



#3 楼

另一个选择是TileMill-它在易于使用的基于Web的界面中支持平铺,交互和制图,包括称为CSS的原始CSS语言中的样式定义。使用TileMill,您可以启动mbtiles文件,这些文件可以与TileStream之类的东西一起使用。也就是说,部署映射输出仍然有一些技巧,但这将为您提供一个生成高质量图块的好平台。

评论


在首页上观看他们的演示视频,这非常令人印象深刻!

– joshdoe
2011年5月19日晚上11:35

#4 楼

我决定提供一些信息,说明我最终选择哪种方式来使用平铺的地图服务。纯JavaScript和GeoJSON不是解决方案,因为我必须处理大约40k多边形和33k点。所以我去铺瓷砖。哦,我仍然无法访问根服务器,因此我无法设置GeoServer或类似的东西(目前单个客户端在财务上不可行)

之后经过研究和阅读之后,我终于与OpenLayers达成协议(在与GMaps进行了一些展示之后)。埃里克·哈扎德(Eric Hazzard)的出色著作《 OpenLayers 2.10》(Packt Publishing,2011年)确实对我有很大帮助,因为它还涵盖了一些JavaScript基础知识和调试技巧。

我在QGIS中完成了所有矢量数据的工作,当然,这绝对是像我这样的小型自由职业者的必经之路(我也从大学知道很多ArcGIS的知识,但是QGIS到目前为止提供了我所需要的一切)。创造瓷砖是一个更大的挑战。首先,我使用了CASA的“ GMapCreator”,但是对多个shapefile进行分层非常繁琐(我必须在多边形上提供点数据,然后在市政边界处封闭所有内容)。绝对可以在GMapsCreator中进行此操作(我在展示阶段做了此操作),但它需要3个完整的渲染周期(首先创建图块,然后现有的图块被“覆盖”了以后的功能-以正确的顺序渲染)是非常重要的!),并且样式菜单略大且令人困惑。保存地图并在以后进行编辑也是一个复杂的问题。

TileMill看起来非常有前途,尤其是类似CSS的样式,因此我对其进行了研究。不幸的是,它仅适用于Mac或Linux,因此可能会使某些人害怕。我真的很喜欢我所看到的,所以我在硬盘上设置了一个Ubuntu分区,下载并为其样式设置了地图。有时,关于样式语法的文档很少,但是观看他们的演示视频(链接在主站点上)几乎可以回答所有问题。可以使用嵌套和/或条件样式来做一些有趣的事情,并且对CSS有一些基本的了解应该真的可以带您去想要的地方。 mbtiles文件。我认为没有办法在OpenLayers中直接显示这些内容(至少我找不到一个?),所以该使用另一个工具mbutil了。该工具将mbtiles文件“解压缩”到常规文件夹结构中,该文件结构包含选定缩放级别上我的数据的平铺png。

最后,我将所有这些文件上传到我的FTP-Server,在OL上进行了大量阅读以使我的Webmap正常运行(您将创建的图块添加为TMS图层,但是猜测正确的源url和图层名称需要花费一些时间并进行谷歌搜索),然后花了一些时间摆弄基本的html / CSS问题。我想要一个100%宽/高的地图,上面有一个浮动的图例,要遵循我的客户“公司”(如上所述,这是自治市)的身份准则。

哦,到目前为止,我使用Google Maps作为基础图层,但很快就会被通过WMS提供的一些自定义航拍照片所取代(不是我提供的,而是该州的勘测和地理数据管理)。

我希望我不会忘记任何重要的东西,但是如果我做到了,请随时问!我会偶尔检查该线程。

评论


Tilemill现在也可用于Windows。 Openlayers用户邮件列表中还有一个相对较新的主题,涉及使用mbtiles作为数据源(尚未尝试)。

–马特·威尔基
2012年3月28日在18:14

啊,谢谢,很高兴知道。绝对必须尝试一下,一直在win7和ubuntu之间切换有点烦人。

– SAnderka
2012年3月30日16:48

#5 楼

如果多边形少于1000个,请考虑@Mapperz对矢量解决方案的评论-如果只有几个多边形,则无需创建和存储非交互式平铺图像。

带标题的图像最适合用于高度密集的信息,例如显示卫星图像,道路或50,000个人口普查区多边形。

少量多边形的最简单解决方案是将shapefile转换为KML并将其上传到Google我的地图。

如果使用Java编写代码,则最具交互性的解决方案是Google Maps API(或OpenLayers)来绘制多边形并创建信息弹出窗口。您可以先使用GDAL库将shapefile多边形转换为geoJSON文件(一种存储地理信息的Java方式)。

或者,如果您沿平铺路线走,您可以将平铺存储在Amazon或Google的云上而不会产生内部麻烦。

此主题映射博客条目对向量方法比您正在考虑的平铺方法的优势。

祝您好运!

评论


我发现,在单个视图上将大约500个点视为向量会趋于缓慢。我们将所有超过500点的内容平铺。

–Michalis Avraam
13年2月27日在22:33

#6 楼

我感到很高兴,因为我一直在慢慢地努力得出同样的结论。学习了QGIS之后,我尝试了Quantamnik和Mapnik。但是,尽管它将单向地移植qgis样式,并且样式系统1对1的价格也不是,因此无论如何您都必须学习mapnik样式。我猜想这也适用于qgis mapserver导出功能。似乎没有一种“简便的方法”可以提高mapserver的技能,只是它并留出大量时间。

Mapnik,geoserver,mapserver,似乎每个人都有奉献精神,但mapserver似乎是中间道。

我已经找到了一个捷径,那就是qgis有一个命令行选项,可以将qgis映射栅格化到您选择的分辨率和范围,并创建一个worldfile。这样,您可以使用maptiler或gdal2tiles一次平铺一层。显然对于20个缩放级别没有好处,也不知道最大png大小限制是什么。

评论


QGIS MapServer与MapServer不同。

–伊恩·特顿♦
2011年5月19日下午14:12

由于存在混淆的可能性,因此应将其称为QGIS Server。

– Underdark♦
2011年5月21日在20:49