代码之家  ›  专栏  ›  技术社区  ›  J. Yu

了解我的shapefile的坐标点(不是纬度/经度)以及为什么空间连接不起作用

  •  1
  • J. Yu  · 技术社区  · 6 年前

    我下载了一个 Postal Codes in Mexico City here .

    我正在尝试进行空间连接,以查看哪些邮政编码与我感兴趣的特定区域相交。

    但当我加载邮政编码时:

    codigos = gpd.read_file('/Users/jaehakyu/Documents/Shapefiles/Mexico Postal Codes/CP_CdMx/CP_09CDMX_v4.shp')
    codigos.head()
    

    我注意到这些邮政编码的多边形中有奇怪的输出。它们不包含纬度/经度坐标。相反,它们看起来是这样的:

    多边形((2794650.259300001 819469.0967999995, 2794601.180299997 819320.3825999983, 2794595.038099997 819303.2646000013, 2794581.846100003 819266.4985000007, 2794552.451700002 819177.5449000001, 2794539.257799998 819142.9415000007, 2794490.202399999 819013.9316000007, 2794461.8829 819006.0326999985, 2794333.362800002 818970.185899999, 2794287.639799997 818974.6688000001, 2794223.908 818980.9173000008, 2794210.812299997 818904.4486999999, 2794187.823399998 818901.436999999, 2794164.019500002 818896.5203000009, 2794128.538500004 818896.0044, 2794122.643299997 818895.9186999984, 2794077.665700004 818894.2122999988, 2794066.248400003 818891.7342999987, 2794046.369499996 818886.5003999993, 2794006.863200001 818880.5144000016, 2793988.908100002 818882.2074999996, 2793965.905199997 818887.1242000014, 2793955.3869 818892.3366999999, 2793903.004799999 818932.752799999, 2793796.985100001 818913.691399999, 2793741.294 818906.6301999986, 2793596.247299999 818889.4554999992, 2793571.957000002 819033.999499999, 2793552.235299997 819034.7226999998, 2793527.926200002 819036.2868999988, 2793444.091899998 818973.02, 2793442.978699997 819118.5722999983, 2793437.997699998 819133.6957999989, 2793430.251699999 819144.4745000005, 2793414.9217 819147.9660999998, 2793334.550800003 819163.0062999986, 2793290.008699998 819170.9169000015, 2793213.590499997 819263.4613000005, 2793110.11 819265.5681000017, 2793117.498800002 819308.4505000003, 2793146.486199997 819475.7197000012, 2793186.218999997 819462.5135999992, 2793249.972900003 819441.3235000001, 2793345.965300001 819414.0322999991, 2793436.257799998 819398.3966999985, 2793517.804700002 819384.2754999995, 2793565.4133 819377.8266999982, 2793601.6972 819374.2901000008, 2793787.7729 819356.7437000014, 2793841.170500003 819343.5784999989, 2793848.679399997 819336.9222000018, 2793862.701300003 819415.7888999991, 2793896.867299996 819558.6755999997, 2793912.430100001 819623.6581000015, 2793934.3768 819672.3953000009, 2793959.285499997 819765.1700000018, 2793964.056900002 819787.6761000007, 2793984.413400002 819883.6871000007, 2793997.486699998 819948.0406999998, 2794004.954099998 819981.5982000008, 2794111.821699999 819973.7314999998, 2794230.936700001 819964.9633999988, 2794347.152999997 819955.9384000003, 2794343.185599998 819899.5188000016, 2794458.9071 819890.1013999991, 2794764.265699998 819868.1314000003, 2794762.4494 819852.9858999997, 2794736.8922 819766.9114000015, 2794727.679099999 819735.4631999992, 2794672.272100002 819545.7978999987, 2794650.259300001 819469.0967999995))

    无论如何,我尝试了空间连接,但没有成功。我还尝试使用CartoDB映射这些多边形,但它们没有显示出来。我不确定我在处理什么,希望有人能帮助我理解:

    (1) 这里的坐标点是什么。 (2) 如何使它们达到纬度/经度,以便空间连接可以工作

    非常感谢。顺便说一句,我正在使用geopandas和Python中的shapely进行这项工作。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Daniel Pryden    6 年前

    也许不用说,但要在空间上连接两个数据集,它们需要在同一个坐标系中。纬度/经度是某些地理坐标系中的坐标(有不止一个,所以请确保您知道是哪个坐标系!)。

    形状文件可以包括各种坐标系中的坐标。通常有 .prj 与描述坐标系信息的形状文件一起分发的文件。

    看看你的数据,我猜它是在东距和北距,以米为单位,在一些投影坐标系中。因此,在地理坐标系中与数据进行空间连接之前,首先需要 未投影 数据(从投影坐标系或平面坐标系转到椭球坐标系),然后可能执行 基准偏移量 (根据不同地理坐标系之间的差异进行调整)。

    我不知道geopandas或shapely,但我知道 proj4 库具有良好的Python绑定,可以执行这些操作。但无论如何,您都需要 .prj公司 文件