मैं कैसे एक आकृति को लाट और लोन सीमाओं में बदल सकता हूं?


12

मेरे पास देश के उपखंडों की एक आकृति है और मैं प्रत्येक मंडल के लिए लैट और लोन बाउंड करने का एक सरणी निकालना चाहूंगा .. क्या ऐसा करना संभव है?


कृपया स्पष्ट करें: क्या आपके पास एक आकृति या एक्सेल फ़ाइल है?
whuber

1
शीर्षक वास्तव में आपके प्रश्न को प्रतिबिंबित नहीं करता है, कृपया इसे संपादित करने के बारे में सोचें।
डेविड नोव

मेरे पास एक आकृति है
Mossplix

जवाबों:


25

OSGEO से ओग पायथन मॉड्यूल का उपयोग करते हुए, यह उदाहरण आपको एक ट्यूपल प्रदान करेगा जिसमें प्रत्येक सुविधा के लिए एक लिफाफे को परिभाषित करने वाले कॉर्ड होते हैं।

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
... और उस पर मुफ्त भू-स्थानिक अजगर; /
डेविड एफएफ

4

एसएजीए जीआईएस http://www.saga-gis.org का उपयोग कर आगे बढ़ने का एक संभावित तरीका इन 3 मॉड्यूलों को चलाने के बाद अपना आकार चुनें: 1. मॉड्यूल \ Shapes \ Tools \ Get Shapes हद

  1. मॉड्यूल \ Shapes \ Tools \ Points \ लाइनों से अंक [नाम के विपरीत जो आप सुझाव देते हैं, उसका उपयोग आप बहुभुज से अंक प्राप्त करने के लिए भी कर सकते हैं]

  2. मॉड्यूल \ Shapes \ Tools \ Points \ निर्देशांक को बिंदुओं में जोड़ें यह आपको एक तालिका देगा जिसमें आपकी बहुभुज फ़ाइल के बाउंडिंग बॉक्स के 4 कोनों के x और y निर्देशांक होते हैं।


4

आर्कगिस में, यहाँ अजगर कोड है। परिणाम मिनैक्स, मिन्टी, मैक्स, मैक्समी, मिनएम, मैक्सएम, मिनज, मैक्सजेड (की सूची है)

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

यहाँ एक R संस्करण है, उदाहरण के लिए rgdal पैकेज के डेटा का उपयोग करते हुए:

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

मैं इस तरह के कार्यों के लिए फियोना और सुडौल का उपयोग करता हूं:

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]))

यह Lat / Lon प्रदान नहीं करता है।
फसल कटाई

आउटपुट इस तरह दिखता है, वे लेट / लोन निर्देशांक हैं: -124.72583900000001,45.544321, -116.915989,49.002494 -82.626182,37.2024267, -77.719518999999,40.638801 -111.056888,40999999999999999999999999999999999999999999999999999।
मतेज
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.