美文网首页gisGeomatics(GIS,GPS,RS,Surveying)
“收集城市行政区与地物边界的数据一定很麻烦吧?”“不会啊”

“收集城市行政区与地物边界的数据一定很麻烦吧?”“不会啊”

作者: 小骨打 | 来源:发表于2017-07-27 17:44 被阅读168次

    前言

    不管是GIS空间分析、城市规划,还是地理数据的管理和统计,如何获取统计单元的边界,常常会困扰我们。调研的数据往往需要耗费大量的人力物力,而网上又很难找到公开的数据。其实许多互联网地图已经有了这些数据,本文朕将与爱卿们探讨从互联网地图中获取数据的一种思路。

    • 谷歌浏览器中打开互联网地图(这里以百度地图为例),按键盘F12调出调试界面。
    • 找到调试面板中的network这一选项,点击clear按钮,先清除所有监控。
    • 在搜索框中搜索需要的获取的区域边界,如搜索“深圳大学”,在地图中会显示相应的区域,蓝色虚线边界的区域就是我们要获取的区域。
    • 对network中的要素按type排序,找到所有xhr类型的文件。
    • 在xhr文件中,有一项格式类似下图所示的文件,点击打开。
    • 在右侧的preview栏中找到content底下有一个geo的属性,其中红框内的数据就是我们要获取的区域边界坐标(如果没有找到,尝试查看其他xhr文件)。
    • 为了更好地处理这些坐标,先复制下来,观察它的特征,发现这一系列数字是将边界的xy依次列出,用逗号隔开的。为了方便处理,可以将格式整理为如下图所示的csv文件。(文末附有转换的python程序,仅供参考)
    • 打开arcmap,添加刚刚生成的csv文件,右键,选择display XY Data。
    • 在弹出的对话框中分别选择X与Y的字段与相应的坐标系(当前应选择米制坐标系)。
    • 这样,就可以生成地块边界点图层了。下图所示为点图层转换为面图层需要用到的工具。
    • 由于我们获取到的坐标采用的是BD09坐标,与常用的GPS坐标有偏差(如上图,深圳大学被偏移到了香港),需要将百度的坐标转换为GPS坐标。但是,百度并不会公开转换的算法,也不会提供相应的接口,这里提供一种转换思路,仅供参考。

    百度坐标和GPS坐标转换在很近的距离时偏差非常接近, 通过计算就可以得到GPS的坐标。
    假设有百度坐标:x1=116.397428,y1=39.90923,把这个坐标当成GPS坐标,通过坐标转换接口获得其百度坐标: x2=116.41004950566,y2=39.916979519873
    通过计算就可以得到GPS的坐标:
    x = 2x1-x2,y = 2y1-y2
    x=116.38480649434001
    y=39.901480480127

    • 转换后再将得到的GPS坐标转为点和面,最终得到的shp图层如下图:

    熟悉了流程之后,不管是小区、大厦、学校,还是行政区的边界,都可以轻松获取到,再也不会再为统计单元数据获取而愁了。本文仅提供一种思路,如果你有更好的方法,欢迎来骚扰朕。

    附-转换格式python代码:

    file_r = open('data/xy.txt', 'r')
    file_w = open('result/result.csv', 'w')
    first_line = file_r.readline()
    xy_split = first_line.split(',')
    
    file_w.write('x,y\n')
    i=0
    for xy in xy_split:
        if i%2==0:
            file_w.write(xy+',')
        else:
           file_w.write(xy + '\n')
       i=i+1
    
    file_r.close()
    file_w.close() 
    

    相关文章

      网友评论

        本文标题:“收集城市行政区与地物边界的数据一定很麻烦吧?”“不会啊”

        本文链接:https://www.haomeiwen.com/subject/fkftlxtx.html