如何在Google Maps / MS Virtual Earth上显示一些shapefile / Well-Known-Text数据?

时间:2008-11-12 01:00:49

标签: google-maps geography virtual-earth

我有一些shapefile(美国的人口统计/热图数据,例如纽约的犯罪)数据导入到sql server 2008数据库,字段数据类型: Geography

如何从选择查询中获取此数据,然后我可以在谷歌地图或微软虚拟地球上显示该格式?

谢谢!

编辑1:到目前为止,最好的解决方案是使用(免费)第三方dll(SharpMap)。我希望有人可能会在sql2008中建议一些sql技巧以兼容的格式返回它...

3 个答案:

答案 0 :(得分:3)

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;

答案 1 :(得分:2)

看看this post - 我成功地使用它来读取shapefile并将它们显示在Virtual Earth上。这应该为您提供如何将形状文件数据叠加到Virtual Earth上的基本概念。

要使用sql server 2008空间数据,我会查看codeplex上的SharpMap项目。这些是我引用的帖子使用的工具,它们支持sql server数据类型。

答案 2 :(得分:0)

最简单的方法是选择XML,然后将数据转换为GeoRSS或KML。 Virtual Earth和Google Maps都支持KML,因此这可能是最简单的方法。

但是有一些考虑因素。如果数据中有许多顶点,则可能需要实现某种AJAX方法来仅检索地图视图中的数据。您可以在SQL 2008中推广数据,以根据缩放级别生成较少量的顶点。如果你缩小到一个国家级别,你不需要像放大城镇一样多的细节。

MapDotNet有很多功能可以让您更轻松地在Virtual Earth地图中获取数据。选择查询并根据需要显示数据相对容易。我确定谷歌地图还有其他类似的产品,但我没有亲自使用它们。它支持多边形和热图,并为您提供比仅使用Virtual Earth更多的功能。虚拟地球是强大的,但是有很多地理信息系统工具,来自地图背景的人会期望你必须在yoursef中进行编程。