आर में शेपफाइल रीडिंग के लिए प्रोज4स्ट्रिंग के लिए सही मूल्य चुनना?


14

मैं पॉलीगॉन और एक अन्य CSV फ़ाइल का एक आकार-प्रकार पा रहा हूं, जिसमें (Lat, Lng) जोड़े के रूप में बिंदुओं की एक सूची है।

मैं CSV फ़ाइल से प्रत्येक (lat, lng) जोड़ी की जांच करना चाहता हूं कि यह किस बहुभुज के अंदर पड़ता है ..

आकृति को प्रक्षेपित किया जाता है और प्रोज फ़ाइल इस तरह पढ़ती है:

PROJCS["Transverse_Mercator",GEOGCS["GCS_OSGB 1936",
DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",49],PARAMETER["central_meridian",-2],PARAMETER["scale_factor",0.9996012717],PARAMETER["false_easting",400000],PARAMETER["false_northing",-100000],UNIT["Meter",1]]

मेरी योजना इस प्रकार है:

  1. readShapePolyआर MapToolsपैकेज में फ़ंक्शन का उपयोग करते हुए शेपफाइल पढ़ें ।
  2. CSV फ़ाइल के निर्देशांक को डेटाफ़्रेम में पढ़ें और इसे SpatialPointsDataFrame में बदलें
  3. overयह निर्धारित करने के लिए फ़ंक्शन का उपयोग करें कि यह किस बहुभुज के अंदर आता है।

ऐसा करने के लिए, मुझे proj4stringचरण 1 में शेपफाइल को लोड करते समय निर्दिष्ट करने की आवश्यकता है और चरण 3 में फ़ंक्शन को spTransformलागू करने से पहले फ़ंक्शन का उपयोग करके CSV फ़ाइल से निर्देशांक को समान प्रोजेक्शन सिस्टम में भी बदलना होगा overक्योंकि इसके लिए अंक और पॉलीगॉन की आवश्यकता होगी एक ही प्रक्षेपण प्रणाली के तहत हो।

ऊपर दिखाए गए proj फ़ाइल सामग्री के लिए सही मूल्य क्या होना चाहिए, इसके बारे में कोई भी विचार?


यदि आपके शेपफाइल (ओं) में पहले से ही प्रक्षेपण परिभाषित उपयोग "रीडोग्र" आरग्डल पैकेज में है। यह पैकेज GDAL के लिए एक आवरण है और वास्तव में maptools में पढ़ने / लिखने की कार्यक्षमता को आकार देता है। यह फ़ंक्शन सभी टोपोलॉजी प्रकारों को संभालता है और प्रक्षेपण जानकारी को बरकरार रखता है।
जेफरी इवांस

जब मैं readOGRफ़ंक्शन का उपयोग करके आकृति फ़ाइल को लोड करने का प्रयास करता हूं तो मुझे हमेशा फ़ाइल त्रुटि नहीं मिल सकती है
मुस्तफा अल्ज़ानटॉट

ठीक है, अब मैं readOGR का उपयोग करके फ़ाइल को पढ़ने में सक्षम रहा हूं .. ऑब्जेक्ट के summaryलिए फ़ंक्शन का उपयोग करके SpatialPolygonDataFrameमुझे इसके लिए सही मान दिया गया हैproj4string
Moustafa Alzantot

खैर, आप बिना फ़ंक्शन के उपयोग के विवरण के बिना यह आपकी मदद करना मुश्किल है! सिंटैक्स का एक हिस्सा वह निर्देशिका है जिसमें डेटा रहता है और आपको फ़ाइल नाम में .shp एक्सटेंशन की आवश्यकता नहीं है। रीडगआर (गेटवेड), "योरशेप") की तरह कुछ काम करना चाहिए, यदि आपके पास अपना कार्य-निर्देशिका उसी स्थान पर सेट है जहां आपका शेफाइल है।
जेफरी इवांस

धन्यवाद @JeffreyEvans, अब इसने काम किया और मैंने इसका इस्तेमाल proj4string
Moustafa Alzantot

जवाबों:


14

Proj4string एक मान्य PROJ4 crs स्ट्रिंग है।

देखें कि मुझे एक आकृति फ़ाइल .prj फ़ाइल से proj4 स्ट्रिंग या EPSG कोड कैसे मिल सकता है? और Shapefile PRJ PostGIS SRID लुकअप टेबल के लिए?

संक्षेप में:

  • आप पहले संदर्भ के रूप में या दूसरे संदर्भ में GDAL पायथन बाइंडिंग के रूप में gdalinfo का उपयोग कर सकते हैं ।

या

  • Prj2EPSG पर जाएं (.prj फ़ाइलों से प्रसिद्ध पाठ प्रक्षेपण जानकारी को मानक ईपीएसजी में परिवर्तित करने के लिए एक सरल सेवा)
  • अपनी prj फ़ाइल की सामग्री दर्ज करें

यहाँ छवि विवरण दर्ज करें

  • परिणाम EPSG: 27700 है, इसलिए PROJ4 स्ट्रिंग का पहला संस्करण है

    " init = epsg: 27700 "

`या

यहाँ छवि विवरण दर्ज करें

  • PROj4 पर क्लिक करें और पूरा PROJ4 स्ट्रिंग है:

    " + Proj = tmerc + lat_0 = 49 + lon_0 = -2 + K = ०.९९९६०१२७१७ + x_0 = 400000 + y_0 = -100,000 + ellps = हवादार + गृहीत = OSGB36 + इकाइयों = मी + no_defs "


10

यहां दिए गए प्रोजेक्शन के लिए EPSG कोड प्राप्त करने के लिए एक बहुत ही आसान वेबसाइट है । आपके मामले में प्रक्षेपण "ईपीएसजी: 27700" है। यदि आपके पास आकृति के लिए परिभाषित अनुमान हैं तो आप SpatialPointsDataFrame बनाते समय प्रोजेक्शन को असाइन कर सकते हैं और फिर अपने आयातित शेपफाइल से प्रक्षेपण परिभाषा का उपयोग कर सकते हैं। Rgdal पैकेज से "readOGR" का उपयोग करने से प्रक्षेपण की परिभाषा बरकरार रहेगी। यहाँ एसपी वर्ग डेटा पर समन्वित तारों को असाइन करने और खींचने का एक उदाहरण है।

require(sp)
require(rgdal)

# Use meuse dataset
data(meuse)

# Coerce into SpatialPointsDataframe
coordinates(meuse) <- ~x+y

# Assign projection
proj4string(meuse) <- CRS("+init=epsg:28992")

# Pull some observations and transform to Lat/Long
meuse.geo <- meuse[sample(dim(meuse)[1],10),]
  prj.LatLong <- CRS("+proj=longlat +ellps=WGS84 +datum=WGS84")
    meuse.geo <- spTransform(meuse.geo, prj.LatLong)

# Pull projection string from meuse.geo and use in spTransform
#   to reproject meuse to lat/long  
( prj <- proj4string(meuse.geo) )   
meuse <- spTransform(meuse, CRS(prj))   
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.