我有一些shapefile(美国的人口统计/热图数据,例如纽约的犯罪)数据导入到sql server 2008数据库,字段数据类型: Geography 。
如何从选择查询中获取此数据,然后我可以在谷歌地图或微软虚拟地球上显示该格式?
谢谢!
编辑1:到目前为止,最好的解决方案是使用(免费)第三方dll(SharpMap)。我希望有人可能会在sql2008中建议一些sql技巧以兼容的格式返回它...
答案 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中进行编程。