我计划创建一个新的 Web 应用程序,我想在其中使用开放街道地图,我需要开放街道地图的源代码。在我的 Web 应用程序中,我需要在图层、数据绘图和地理参考上查看不同形状文件的功能。请给我建议,如何开始呢?
1 回答
根据您的描述,您实际上需要几件事,而不仅仅是一些小样本:
- 用于显示静态地图(例如:OpenStreetMap)和动态数据的客户端库。
- 服务器端地理空间服务,用于从您自己的 shapefile 构建地图。这适用于复杂、更大、更静态的地图。您需要一个地图创作工具和地理空间服务器(它们通常配对在一起),以设计地图、构建切片图像缓存并作为 WMS/WMTS 服务发布,然后您可以将它们与 OpenStreetMap 一起显示在网站上。
- 自定义 Web 服务,用于将空间数据库中的简单 shapefile 或查询结果转换为客户端库支持的任何可读格式。这通常用于动态的、少量的空间数据,具有最小的绘图样式。
- 如果您想从 3. 组织简单的 shapefile,通常您还会使用空间数据库,例如 PostGIS/PostgreSQL 或 Microsoft SQL Server。它们将几何特征存储在数据库列中,并扩展 SQL 以提供包含或联合等空间操作,允许您同时查询普通数据和几何特征,或以 WKT 或 GML 等可读格式返回结果。不过,您需要其他实用程序才能将 shapefile 加载到其中。
1,OpenLayers是网站上最受欢迎的地图库之一。它是纯 JavaScript 和开源的,另一个选择是 Esri 的 ArcGIS SDK——他们有用于 web 的 SDK(包括 JavaScript 和 Silverlight)等等;它们是免费使用的,一半的功能是作为带有源代码的示例提供的,例如地图打印,并且它们的 SDK 支持除了自己的专有服务之外的所有开放标准。两者都直接支持 OpenStreetMap,并且在 Esri 的网站上,几乎所有功能都有教程/示例。
对于 2,您可以使用免费的 GeoServer 或 MapGuide(带有创作工具),或商业 ArcGIS 服务器加上 ArcMap 作为创作工具。
对于 3,你必须谷歌。应该有很多库来加载 shapefile。对于空间数据库,这要容易得多,因为它们可以通过 SQL 变体中的内置函数转换为人类可读的 WKB 或 GML。
对于 4,Microsoft SQL Server 是最简单的使用,并且 express 版本是免费的,尽管在 2012 年之前它的功能很烂,性能也很糟糕。 PostGIS/PostgreSQL 的功能更丰富,包括不同坐标系之间的直接转换。我从未使用过 Oracle,但它们甚至支持拓扑格式。
PS:虽然地理空间服务器也可以实时绘制空间数据并将它们渲染为位图以供网站显示,但它会立即使您的网络服务器陷入困境。如果您需要处理动态绘制大量空间数据,则必须在 OpenLayers 中尝试使用画布或 SVG 渲染器。