मेरे पास देश के उपखंडों की एक आकृति है और मैं प्रत्येक मंडल के लिए लैट और लोन बाउंड करने का एक सरणी निकालना चाहूंगा .. क्या ऐसा करना संभव है?
मेरे पास देश के उपखंडों की एक आकृति है और मैं प्रत्येक मंडल के लिए लैट और लोन बाउंड करने का एक सरणी निकालना चाहूंगा .. क्या ऐसा करना संभव है?
जवाबों:
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
एसएजीए जीआईएस http://www.saga-gis.org का उपयोग कर आगे बढ़ने का एक संभावित तरीका । इन 3 मॉड्यूलों को चलाने के बाद अपना आकार चुनें: 1. मॉड्यूल \ Shapes \ Tools \ Get Shapes हद
मॉड्यूल \ Shapes \ Tools \ Points \ लाइनों से अंक [नाम के विपरीत जो आप सुझाव देते हैं, उसका उपयोग आप बहुभुज से अंक प्राप्त करने के लिए भी कर सकते हैं]
मॉड्यूल \ Shapes \ Tools \ Points \ निर्देशांक को बिंदुओं में जोड़ें यह आपको एक तालिका देगा जिसमें आपकी बहुभुज फ़ाइल के बाउंडिंग बॉक्स के 4 कोनों के x और y निर्देशांक होते हैं।
आर्कगिस में, यहाँ अजगर कोड है। परिणाम मिनैक्स, मिन्टी, मैक्स, मैक्समी, मिनएम, मैक्सएम, मिनज, मैक्सजेड (की सूची है)
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
यहाँ एक 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,]))
}
मैं इस तरह के कार्यों के लिए फियोना और सुडौल का उपयोग करता हूं:
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]))