我有一些 shapefile(美国的人口统计/热图数据,例如纽约的犯罪)数据导入 sql server 2008 数据库,字段数据类型:Geography。
我怎样才能从选择查询中以我可以在谷歌地图或微软虚拟地球上显示的格式获取这些数据?
谢谢!
编辑 1:到目前为止,最好的解决方案是使用(免费)第 3 方 dll(SharpMap)。我希望有人可能会在 sql2008 中建议一些 sql 技巧以兼容格式返回它......
我有一些 shapefile(美国的人口统计/热图数据,例如纽约的犯罪)数据导入 sql server 2008 数据库,字段数据类型:Geography。
我怎样才能从选择查询中以我可以在谷歌地图或微软虚拟地球上显示的格式获取这些数据?
谢谢!
编辑 1:到目前为止,最好的解决方案是使用(免费)第 3 方 dll(SharpMap)。我希望有人可能会在 sql2008 中建议一些 sql 技巧以兼容格式返回它......
Geri Langlois 的 Sharpmap 链接是 0.9 如果你想要最前沿,存储库在这里: http ://sharpmapv2.googlecode.com/svn
此外,在开始将坐标信息放入 KML 之前,您必须确保您的数据是 Lat/Long WGS84 而不是其他数据。我不知道在 SQLServer2008 中这样做的方法(可能需要使用ogr2ogr)。
使用 STX 和 STY,您可能可以为 KML 生成一些坐标标签
select SHAPE.STX as X
,SHAPE.STY as Y
,SHAPE.STAsText() as WKT
,SHAPE.AsGml() as GML
from dpu.SW_SERVICE_LOCATIONS
也许是这样的:
SELECT '<coordinates>'+convert(varchar,convert(decimal(20,6), SHAPE.STX),1)+
','+ convert(varchar,convert(decimal(20,6), SHAPE.STY),1)
+ '</coordinates>'
FROM sw_service_locations;
看看这篇文章——我成功地用它来读取 shapefile 并将它们显示在 Virtual Earth 上。这应该让您了解如何将形状文件数据叠加到虚拟地球上。
要使用 sql server 2008 空间数据,我会查看codeplex上的SharpMap项目。这些是我引用的帖子中使用的工具,它们确实支持 sql server 数据类型。
最简单的方法是选择 XML,然后将数据转换为 GeoRSS 或 KML。Virtual Earth 和 Google Maps 都支持 KML,因此这可能是最简单的方法。
不过也有考虑。如果您的数据中有很多顶点,您可能希望实现某种 AJAX 方法来仅检索地图视图中的数据。您可以概括 SQL 2008 中的数据,以根据您的缩放级别制作较少数量的顶点。如果您缩小到国家级别,则不需要像放大到城镇一样多的细节。
MapDotNet具有许多功能,可以更轻松地在虚拟地球地图中获取数据。执行选择查询并根据需要显示数据相对容易。我敢肯定还有其他类似的谷歌地图产品,但我没有亲自使用过。它支持多边形和热图,并为您提供比仅使用虚拟地球更多的功能。Virtual Earth 功能强大,但有很多 GIS 工具,具有地图背景的人会认为您必须自己编写程序。