`
thecloud
  • 浏览: 877947 次
文章分类
社区版块
存档分类
最新评论

BingMap读取shape(arcgis)格式数据(将shape文件转成Sql server2008的geometry类型,再进行读取)

 
阅读更多

1. 用Arcmap打开shape数据(region),先转换坐标系(GCS_WGS_1984),在地图的数据框属性中可以针对单个图层进行坐标系的转换。

2. 如果一个区域有多个不相邻的图形组成(mult-polygon),需要用ArcToolbox的多部分(multipart)转单部分(SinglePart)

3. 如果面转折点后的数量太多,影响加载boundary后的移动和缩放的效率,就需要进行重采样处理,经过实践发现SuperMap工具的重采样功能简单实用,用SuperMap Deskpro6打开(导入)前面处理好的数据,直接右击数据集进行重采样操作,数据的值最好是在(0.0001~0.001)范围之内,将重采样后的数据重建空间索引(提高数据操作的效率),导出重采样后的数据成shape格式。

4. 用Arcmap打开Supermap导出的数据,为了区分转点之后的数据与原数据的对应关系,最好是将转点前的多边形加一个ObjectID字段来标识Polygon的唯一性,应用ArcToolbox工具的要素折点转点工具,将面的数据转成多个点的数据,如果点的数据太多或者太少与原有图形差别较大,则需要重做第三步的重采样操作。

5. 给转化成点后的数据添加x、y坐标(ArcToolbox)。

6. 用Excel打开shape文件中的dbf格式的文件,删除一些不必要的列之后,增加一个自增长的id列【确保点的数据是按照id的顺序排列的,一旦转入数据库中的的数据顺序不对的时候可以用order by id来整理顺序】,然后将文件保存成mapping_county.xls或者mapping_county.xlsx格式。

7. 用sql server2008的导入工具将xlsx数据导入至数据库中的一个表mapping_county。

8. 用自己写的一个工具将这些点的数据转成geometry格式的数据【GeometeyCollection、MultiPolygon、Polygon】,其中涉及到一些首尾点不一致的情况,大部分是由于原来的图形是multiPolygon(重做第二步)或者原来的图形中包含岛洞(先删除岛洞,再将岛洞附加到表中的另一个字段中,读取时先判断是否包含岛洞,如不需要很精确可以直接将岛洞删除),这种数据需要单独进行处理【如今发现WKT格式的数据也支持岛洞,此处可以用程序处理(ThematicMap.sln)】。

9. 用BingMap程序读取Mapping_geodata_boundary中Geometry格式的数据显示到地图上,带有岛洞的多边形需要用AdvacedShape的module来处理。

10. 添加到bingMap上的多边形需要将地图上的多边形render(渲染)颜色,关于颜色的渲染要保证相邻的颜色颜色不能一样,查阅相关的资料,可以用到的是数学上的三大未解之谜(四色定理)来解决此问题,鉴于此【bingMap空间判断方法的限制】,我们组采用了polygon外接矩形来判断相邻区域的临界情况,如此可用4~6种颜色可以解决。虽然比四色定理多了两种颜色,但是也满足实际的应用需求了。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics