şekil dosyasını nasıl lat ve lon sınırlarına dönüştürebilirim?


12

ülke alt bölümleri bir shapefile var ve her bölüm için lat ve lon sınırlayıcı bir dizi ayıklamak istiyorum .. mümkün mü?


Lütfen açıklığa kavuşturun: bir şekil dosyanız veya bir Excel dosyanız var mı?
whuber

1
Başlık sorunuzu gerçekten yansıtmıyor, lütfen düzenlemeyi düşünün.
DavidF

ı have a shapefile
mossplix

Yanıtlar:


25

OSGEO'dan ogr Python modülünü kullanarak, bu örnek size her özellik için bir zarf tanımlayan koordinatları içeren bir demet verecektir.

from osgeo import ogr

ds = ogr.Open("mn_counties.shp")
lyr = ds.GetLayerByName("mn_counties")

lyr.ResetReading()

for feat in lyr:
    # get bounding coords in minx, maxx, miny, maxy format
    env = feat.GetGeometryRef().GetEnvelope()
    # get bounding coords in minx, miny, maxx, maxy format
    bbox = [env[0], env[2], env[1], env[3]]
    print env
    print bbox
    print

2
... ve özgür jeo-uzaysal pitonu /
DavidF

4

SAGA GIS kullanarak devam etmenin olası bir yolu http://www.saga-gis.org Şekil dosyasını açtıktan sonra şu 3 modülü çalıştırın: 1. Modüller \ Şekiller \ Araçlar \ Şekilleri al kapsamı

  1. Modüller \ Şekiller \ Araçlar \ Noktalar \ Satırlardan alınan noktalar [adın önerdiğinin aksine bunu bir çokgenden puan almak için de kullanabilirsiniz]

  2. Modüller \ Şekiller \ Araçlar \ Noktalar \ Noktalara Koordinatlar Ekle Bu, çokgen dosyanızın sınırlama kutusunun 4 köşesinin x ve y koordinatlarını içeren bir tablo verecektir.


4

Arcgis'te işte python kodu. sonuç minx, miny, maxx, maxy, minM, maxM, minZ, maxZ (

import arcpy
for feat in arcpy.SearchCursor(r"c:\data\f.gdb\counties"):
    print feat.Shape.extent

-2.66852727251546 49.4265363633626 -2.52848181818121 49.5079454546192 NaN NaN NaN NaN
-10.463336363782 51.4455454544593 -6.01305454583045 55.3799909091533 NaN NaN NaN NaN
-4.77778181827614 54.0555454544593 -4.35347272688468 54.4100000000002 NaN NaN NaN NaN

4

İşte rgdal paketindeki örnek verileri kullanan bir R sürümü:

library(rgdal)
dsn <- system.file("vectors/ps_cant_31.MIF", package = "rgdal")[1]
d <- readOGR(dsn = dsn, layer="ps_cant_31")

## transform if this is not longlat
if (is.projected(d)) d <- spTransform(d, CRS("+proj=longlat +ellps=WGS84"))

for (i in 1:nrow(d)) {
  print(bbox(d[i,]))    
}

1

Ben fiona ve düzgün bir şekilde bu tür görevler için kullanıyorum:

import fiona
from shapely.geometry import shape

with fiona.open(r'd:\Projects\_00_Data\_USstates\fe_2007_us_state00.shp', 'r') as features:
    for i, feat in enumerate(features):
        geom = shape(feat['geometry'])
        name = feat['properties']['NAME00']
        print ','.join((name,) + tuple([str(i) for i in geom.bounds]))

Enlem / boylam sağlamaz.
harvpan

Çıktı şöyle görünür, bunlar enlem / boylam koordinatlarıdır: -124.72583900000001,45.544321, -116.915989,49.002494 -82.626182,37.202467, -77.719518999999,40.638801 -111.056888,40.99634599,99999099,99999099,997
Matej
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.