代码之家  ›  专栏  ›  技术社区  ›  Fabio Lamanna

python-创建等间距空间网格的shapefile

  •  0
  • Fabio Lamanna  · 技术社区  · 11 年前

    我是地理信息系统的新手,我一直在用纬度、经度坐标在地图上绘制点。我想在地图上建立一个500米见方的空间网格,以便以后用这个新的空间约束与这些点相交。输出应在.shp文件中。

    到目前为止,我一直在使用basemap包轻松阅读,并以如下形式绘制一些已经制作好的网格:

    Code minx miny maxx maxy
    

    说明每个正方形(Code)的顶点坐标。我不知道如何创建一个新的网格,给定一个选定的空间区域为:

    # Projection CYL Cylindrical Equal Distance Projections (PlateCarree)
    m = Basemap(projection='cyl',
        llcrnrlat=41.1905,urcrnrlat=41.5404,
        llcrnrlon=1.9144,urcrnrlon=2.6628,
        resolution='c')
    

    如有任何帮助,将不胜感激。

    1 回复  |  直到 11 年前
        1
  •  2
  •   Community Mohan Dere    9 年前

    最后,我用地质标准和Basemap管理了所有的事情。首先,我发现 script 将空间部分(在UTM区域31投影中)划分为500 m的等空间网格。然后,我必须将网格坐标转换为Lat/Lon,以使其与我的点相匹配:

    import geopandas as gpd
    
    geofile_in = 'UTMgrid.shp'
    geofile_out = 'LATLONgrid.shp'
    
    g = gpd.read_file(geofile_in)
    
    originalcrs = {u'units': u'm', u'ellps': u'WGS84', u'datum': u'WGS84', u'proj': u'utm', u'zone': 31}
    targetcrs = {u'ellps': u'WGS84', u'datum': u'WGS84', u'proj': u'longlat'}
    
    # Set the original crs (UTM Zone 31 N)
    g.crs = originalcrs
    # Transform the Grid to the target crs (Lon, Lat)
    g.to_crs(crs=targetcrs, inplace=True)
    # Save to .shp file
    g.to_file(geofile_out)
    

    希望这会有所帮助。