2014-10-21 6 views
5

में आकृतिफ़ाइल निर्देशांक पढ़ना मैं एक आकारफाइल की सामग्री का उपयोग करके अक्षांश/देशांतर के साथ "एक्सएएमएल मानचित्र नियंत्रण" पर एक पॉलीलाइन खींचना चाहता हूं।सी #

  • .dbf, .prj, qpj, .shx और स्पष्ट रूप से .shp फ़ाइल के साथ एक:

    मैं शेपफ़ाइल के 2 प्रकार की है।

  • केवल के साथ एक फ़ाइल .shp

विभिन्न पुस्तकालयों के साथ फ़ाइलों के दोनों प्रकार के साथ पढ़ना (नेट टोपोलॉजी सुइट, और अब DotSpatial) मैं निर्देशांक (DotSpatial.Topology.Coordinate) की तरह की सूची प्राप्त:

X 456874.625438354 
Y 5145767.7929015327 
  • मैं अक्षांश/देशांतर प्रारूप में कैसे परिवर्तित कर सकता हूं?
  • वर्तमान प्रारूप क्या है?
  • क्या फ़ाइलें .shp फ़ाइल के साथ उपयोगी हैं?
+1

आपको पहले से ही लेट/लम्बाई मिलनी चाहिए, सुनिश्चित करें कि आप सही SRID और प्रक्षेपण निर्दिष्ट कर रहे हैं। – Habib

+0

सहायता के लिए धन्यवाद। आकारफाइल (आकारफाइल.प्रोजेक्शन) प्रक्षेपण WGS_1984_UTM_Zone_32N है, मुझे लगता है कि निर्देशांक यूटीएम प्रारूप में हैं, क्या आपके पास कुछ रूपांतरण उदाहरण है? – iRubens

+0

मुझे बताएं कि आप किस एपीआई का उपयोग कर रहे हैं और आप ड्रैग और ड्रॉप करने में सक्षम हैं? –

उत्तर

4

आप लंबे समय तक पुन: प्रक्षेपित करने के लिए डॉटस्पाटियल का उपयोग कर सकते हैं। आप शेपफ़ाइल में पढ़ रहे हैं, और इतना है कि प्रक्षेपण में जाना जाता है .prj फ़ाइल नहीं है, तो तुम सब करने की जरूरत है:

 Shapefile sf = Shapefile.OpenFile("C:\myshapefile.shp"); 
     sf.Reproject(DotSpatial.Projections.KnownCoordinateSystems.Geographic.World.WGS1984); 

अगर, हालांकि .prj फ़ाइल याद आ रही है, तो आप करेंगे पहले की तरह प्रक्षेपण निर्धारित करने होंगे:

 Shapefile sf = Shapefile.OpenFile("C:\myshapefile.shp"); 
     sf.Projection = DotSpatial.Projections.KnownCoordinateSystems.Projected.UtmWgs1984.WGS1984UTMZone32N; 
     sf.Reproject(DotSpatial.Projections.KnownCoordinateSystems.Geographic.World.WGS1984); 

लेकिन अगर, उदाहरण के लिए आप कोई शेपफ़ाइल की जरूरत नहीं है और तुम सिर्फ एक से दूसरे प्रक्षेपण से निर्देशांकों के एक सेट में पुनः प्रक्षेपित करना चाहते हैं, तो आप पुनः प्रक्षेपित उपयोगिता सीधे उपयोग कर सकते हैं :

 // interleaved x and y values, so like x1, y1, x2, y2 etc. 
     double[] xy = new double[]{456874.625438354,5145767.7929015327}; 
     // z values if any. Typically this is just 0. 
     double[] z = new double[]{0}; 
     // Source projection information. 
     ProjectionInfo source = DotSpatial.Projections.KnownCoordinateSystems.Projected.UtmWgs1984.WGS1984UTMZone32N; 
     // Destination projection information. 
     ProjectionInfo dest = DotSpatial.Projections.KnownCoordinateSystems.Geographic.World.WGS1984; 
     // Call the projection utility. 
     DotSpatial.Projections.Reproject.ReprojectPoints(xy, z, source, dest, 0, 1); 

यह अंतिम विधि इस तरह की एक सरणी का उपयोग करती है ताकि प्रक्षेपण मॉड्यूल डेटा मॉड्यूल के प्रत्यक्ष संदर्भ के बिना काम कर सके।