मैं जीडीएएल पुस्तकालय का उपयोग कर रहा हूं। वर्तमान में, मैं ऊपरी बाएं बिंदु और ऊपरी दाएं बिंदु में ले सकता हूं और मूल से बाहर एक छवि चिपका सकता हूं। मैं अब क्या करना चाहता हूं, दो डब्लूकेटी पॉइंट्स में ले जाता है और एक्स, वाई समन्वय को एक ही चीज़ करने के लिए परिवर्तित करता है। मैं बस सोच रहा था कि क्या ऐसा करना संभव था अगर मुझे जियोट्रांसफॉर्म पता था और यह किस समन्वय प्रणाली का उपयोग कर रहा था (डब्लूजीएस 84)?यदि आपके पास एक जियोटीफ है, तो क्या यह एक एक्स/वाई को एक लेट/लॉन प्वाइंट को बदलने के लिए संभव होगा, जो GeoTransform का उपयोग कर रहा है?
उत्तर
मैंने कुछ नमूना अक्षांश/अक्षांश की गणना करने के लिए छवि के लिए एफ़िन ट्रांसफॉर्म का उपयोग किया। मेरी एकमात्र समस्या यह थी कि यदि छवि उत्तर का सामना कर रही है, तो geoTransform [2] और geTransform [4] को लेट/लॉन की गणना करते समय शून्य आउट करने की आवश्यकता है।
x = (int)Math.Abs(Math.Round((Latitude - geotransform[0])/geotransform[1]));
y = (int)Math.Abs(Math.Round((Longitude - geotransform[3])/geotransform[5]));
आप इसे जानवर बल करना चाहता था, तो आप निम्न कर सकता है (मैं इस किया था और यह काम किया, लेकिन यह सिर्फ स्यूडोकोड है):
//Get the Pixel for the length and width, this portion is for the full image
pixelXSize = AbsoluteValue((latitudeAt(Zero)-(latitudeAt(Length)-1))/imageLength);
pixelYSize = AbsoluteValue((longitudeAt(Zero)-(LongitudeAt(Width)-1))/imageWidth);
//Calculate the x,y conversion for the points you want to calculate
x = AbsoluteValue((latitudeToConvert-latitudeAt(Zero))/pixelXSize);
y = AbsoluteValue((longitudeToConvert-longitudteAt(Zero))/pixelYSize);
इस उत्तर एक के बाद बंद हो सकता है या दो पिक्सेल। यदि आप एक geotransform का उपयोग कर रहे हैं, तो फिर उत्तर फ़ेसिंग चर वापस लौटाए गए उत्तर को गड़बड़ कर सकते हैं। अब तक, मैंने केवल उत्तर की छवियों के लिए इसका परीक्षण किया है।
मुझे लगता है कि यहां मेरा प्रश्न गैर-उत्तर वाली छवियों को संभालने का तरीका होगा। – avtoader
मैं इससे पहले भी इसमें भाग गया, और यहां समन्वय परिवर्तन करने का एक अच्छा पर्याप्त तरीका है। GDAL documentation से
नोट:
समन्वय प्रणाली GDALDataset :: GetProjectionRef() का वर्णन करता है भू-संदर्भित affine भू-संदर्भ से गर्भित निर्देशांक GDALDataset :: GetGeoTransform() द्वारा दिया बदलने से लौट आए।
हम इसका उपयोग करने के लिए OGRCoordinateTransformation के साथ इसका उपयोग कर सकते हैं।
मूल रूप से कोड कुछ इस तरह दिखेगा:
// Load up some dataset.
dataset = (GDALDataset *) GDALOpen(mapfile, GA_ReadOnly);
// Define Geographic coordinate system - set it to WGS84.
OGRSpatialReference *poSRS_Geog = new OGRSpatialReference();
poSRS_Geog->importFromEPSG(4326); // WGS84
// Define Projected coordinate system - set to the GeoTransform.
const char *sProj = dataset->GetProjectionRef();
OGRSpatialReference *poSRS_Proj = new OGRSpatialReference(sProj);
// Set up the coordinate transform (geographic-to-projected).
OGRCoordinateTransformation *poCT_Geog2Proj;
poCT_Geog2Proj = OGRCreateCoordinateTransformation(poSRS_Geog, poSRS_Proj);
// Now everything is set up and we set transforming coordinates!
// Pass Lon/Lat coordinates to the Transform function:
double x = lon;
double y = lat;
poCT_Geog2Proj->Transform(1, &x, &y);
// Now x and y variables will contain the X/Y pixel coordinates.
है कि कैसे आप देशांतर/अक्षांश और पिक्सेल निर्देशांकों के बीच में बदल सकते हैं। ध्यान दें कि आप Transform()
के साथ सरणी का उपयोग कर सकते हैं, और एकाधिक निर्देशांक एक साथ परिवर्तित कर सकते हैं। पहला तर्क रूपांतरण के लिए समन्वय जोड़े की संख्या है, और दूसरे और तीसरे तर्क एक्स और वाई के पॉइंटर्स हैं। मैं बस एक जोड़ी को बदलता हूं।
// Set up the coordinate transform (projected-to-geographic).
OGRCoordinateTransformation *poCT_Proj2Geog;
poCT_Proj2Geog = OGRCreateCoordinateTransformation(poSRS_Proj, poSRS_Geog);
मैं इस विधि का उपयोग: लंबे समय तक
void transformCoordinatesEPSG(OGRGeometry &geometry,int from, int to) {
OGRSpatialReference srcSpatialReference;
OGRErr error = srcSpatialReference.importFromEPSG(from);
#ifdef __OGRTRANSFORMDEBUG
qDebug() << "Import EPSG " << from << "return " << error;
#endif
OGRSpatialReference dstSpatialReference;
error = error | dstSpatialReference.importFromEPSG(to);
#ifdef __OGRTRANSFORMDEBUG
qDebug() << "Import EPSG " << to << "return " << error;
#endif
OGRCoordinateTransformation* coordTrans = OGRCreateCoordinateTransformation(&srcSpatialReference, &dstSpatialReference);
geometry.transform(coordTrans);
}
अक्षांश/के लिए 4326.
- 1. यदि आपके पास जावा एप्लिकेशन है जो CPU को उपभोग कर रहा है, तो यह कुछ भी नहीं कर रहा है, तो आप यह कैसे निर्धारित करते हैं कि यह क्या कर रहा है?
- 2. यदि आपके पास आईबीओलेट है, लेकिन संपत्ति नहीं है, तो क्या यह बरकरार है या नहीं?
- 3. एक अच्छा जियोटीफ व्यूअर क्या है?
- 4. क्या आपके पास एक संपत्ति नाम है जिसमें डैश
- 5. यदि आपके पास एक ही तालिका में VARCHAR है तो CHAR का उपयोग करने में कोई बात है?
- 6. यदि बूल int के लिए एक मैक्रो है, तो यह एक अलग आकार क्यों है?
- 7. jquery एक वर्ग को हटा रहा है (यदि यह मौजूद है और एक नई कक्षा जोड़ रहा है)
- 8. क्या आपके पास कभी एक व्यावसायिक आवश्यकता है जो एनपी-पूर्ण समस्या बन गई है?
- 9. क्या एक अलग उप डोमेन से कुकी को पढ़ना संभव है? यदि हां, तो कैसे?
- 10. क्या आपके पास कार और सीडीआर के अर्थ को याद रखने के लिए एक नींबू है?
- 11. यदि आप अब एक कंप्यूटर विज्ञान पाठ्यक्रम ले सकते हैं, तो यह क्या होगा?
- 12. एक कन्स्ट्रक्टर के भीतर से एक समारोह में "यह" पास कर रहा है?
- 13. क्या यह एक निजी वर्ग संभव है?
- 14. बूस्ट: यदि यह सूचक है तो एक टेम्पलेट तर्क
- 15. एक कारखाने को बदलने के लिए निनजेक आईओसी का उपयोग
- 16. क्या आपके पास एक अच्छा पर्ल टेम्पलेट स्क्रिप्ट है?
- 17. यदि "सूची" एक मोनॉयड है, तो इसका "सेट" क्या है?
- 18. यदि आपके पास देश का नाम
- 19. क्या आपके पास एएसपी.नेट एमवीसी के साथ काम कर रहे एक कैस्केडिंगड्रॉपडाउन है?
- 20. बैकबोन - क्या एक संपत्ति को छोड़कर, एक मॉडल में एक बदलाव घटना को बांधना संभव है?
- 21. क्या यह एक विधि के लिए एक कोड गंध है जो दूसरे पर निर्भर करता है?
- 22. एक बड़ी छवि के साथ क्या करना है जो धीमा वेबसाइट को धीमा कर रहा है
- 23. क्या एक मोनाड बनाना संभव है जो निर्देशों की संख्या को गिनता है?
- 24. क्या यह थ्रेड में प्रिंटफ को कॉल करने के लिए सुरक्षित है जो एक साथ चल रहा है?
- 25. क्या यह विधियों को लिखने के लिए एक अच्छा अभ्यास है जो शून्य लौटाता है?
- 26. CGWarpMouseCursorPosition देरी क्यों कर रहा है? यदि यह नहीं है, तो क्या है?
- 27. एक उपयोग प्रकार को एक निर्दिष्ट कथन अपरिभाषित व्यवहार के भीतर से संशोधित कर रहा है?
- 28. एक निर्देशिका में एक पैकेज को बदलने के लिए कैसे?
- 29. एक सी प्रोग्राम को धीमा कर रहा है यह जानने के लिए उपकरण?
- 30. अपवादों का उपयोग कर प्रमाणीकरण/प्राधिकरण त्रुटियों को संभालने के लिए यह एक अच्छा अभ्यास है?
अधिक जानकारी होनी चाहिए:
नोट यह भी उतना ही आसान है बदलने उलटा स्थापित करने के लिए मैं वर्तमान में GeoTransform का उपयोग कर एक एक्स, वाई को लेट/लॉन में बदल सकता है। – avtoader