पत्रक geojson समस्या का समन्वय


14

मैंने अभी थोड़ा सा leflet / geojson के साथ खेलना शुरू किया। लेकिन मेरे निर्देशांक सही तरीके से प्रस्तुत नहीं किए गए हैं और मुझे कोई सुराग नहीं है कि क्या चल रहा है।

मेरे निर्देशांक हैं: 52.23943, 4.97599। वे setViewफ़ंक्शन के साथ सही काम करते हैं।

var map = L.map('leaflet_map').setView([52.23943, 4.97599], 15);

लेकिन एक geojasonFeature का उपयोग करते हुए वे, हम्म, 'अनुमानित', सोमालिया के पूर्व में कहीं हैं।

var geojsonFeature = {
            "type": "Feature",
            "properties": {
            "name": "Coors Field",
            "amenity": "Baseball Stadium",
            "popupContent": "This is where the Rockies play!"
            },
            "geometry": {
                "type": "Point",
                "coordinates": [52.23943, 4.97599]
            }
        };
        var myLayer = L.geoJson().addTo(map);
        myLayer.addData(geojsonFeature).bindPopup("I am a gjson point.");

जो भी जानता है कि यहां क्या हो रहा है?

संपादित करें

शुद्ध जिज्ञासा से मैंने चारों ओर निर्देशांक को बदल दिया [4.976143930893815,52.23925499011473]और बिंदु अपने सही स्थान पर दिखाई देता है। एक ज्ञात बग !?

जवाबों:


25

मैं इसे बग नहीं कहूंगा, बस भ्रमित करने और विरोधाभासी मानकों का मामला है।

भौगोलिक स्थानों के बारे में बात करते समय, हम आमतौर पर लैट-लॉन्ग का उपयोग करते हैं। यह आईएसओ 6709 मानक में संहिताबद्ध किया गया है ।

कार्टेशियन के साथ काम करते समय ज्यामिति समन्वय करते हैं, हम आम तौर पर XY का उपयोग करते हैं। कई जीआईएस सिस्टम, 2 डी समन्वय बिंदु के एक विशेष मामले के रूप में भौगोलिक स्थान के साथ काम करते हैं, जहां एक्स देशांतर का प्रतिनिधित्व करता है और वाई अक्षांश का प्रतिनिधित्व करता है। निर्देशांक का यह क्रम, नियमित लाट-लंबी धारणा के बिल्कुल विपरीत है।

आपकी समस्या के लिए आ रहा है:

Map.setView एक इनपुट के रूप में एक l.LatLong लेता है , जहां पहला कॉर्डिनेट एक अक्षांश है, और दूसरा देशांतर है।

इसलिए जब आप चाहें 52.23N, 4.97E, तो आप पास हो जाते हैं[52.23943, 4.97599]

GeoJSON मानक का कहना है किसी भी बिंदु के लिए, पहले पैरामीटर एक्स समन्वय है कि (यानी देशांतर) और दूसरा पैरामीटर वाई समन्वय है (यानी अक्षांश);

इसलिए जब आप 52.23N, 4.97Eजियोसन में चाहते हैं , तो आपको पास होने की आवश्यकता होती है [4.97599, 52.23943]

आगे पढ़ने के लिए, इस प्रश्नोत्तर के माध्यम से जाएँ


वास्तव में भ्रम की बात है। मैं सिर्फ जियोजोन कल्पना पढ़ता हूं और वास्तव में आप बिल्कुल सही हैं। यहाँ उद्धरण है तत्वों के आदेश का पालन करना चाहिए x, y, z क्रम (पूर्व की ओर, नॉर्थिंग, एक समन्वित संदर्भ प्रणाली में निर्देशांक के लिए ऊंचाई, या एक भौगोलिक समन्वय संदर्भ प्रणाली में निर्देशांक के लिए देशांतर, अक्षांश, ऊंचाई
LarsVegas

1
@LarsVegas इस अंक का मूल अंग्रेज़ी भाषा है। जब हम भौगोलिक स्थान के बारे में बात कर रहे होते हैं तो हम आमतौर पर लैट-लॉन्ग कहते हैं और समन्वय ज्यामिति के बारे में बात करते समय XY का उपयोग करते हैं।
देवदत्त तेंग्शे

कौन से प्रोग्राम और लाइब्रेरीज़ का सारांश X, Y और कौन सा Y, X पेयर ऑर्डरिंग का उपयोग करता है: macwright.org/lonlat , सौजन्य टॉम MacWrite
मैट

इस उपयोगी उत्तर के लिए धन्यवाद ... लेकिन जिओसन ने ऐसा करने का चयन क्यों किया ??
टॉमी

1

मैं बस इस मुद्दे पर टकरा रहा हूँ। इस समस्या का सामना करने वाले किसी भी व्यक्ति के पास काफी संख्या में लाट, लंबे डेटा पेयर हैं, आप निम्नलिखित js का उपयोग कर सकते हैं:

var a = "[LatLng(37.43943, 25.30563)],[LatLng(37.4367, 25.30495)],[LatLng(37.43071, 25.29945)],[LatLng(37.42362, 25.30426)],[LatLng(37.42089, 25.31113)],[LatLng(37.41489, 25.31113)],[LatLng(37.41053, 25.30769)],[LatLng(37.40235, 25.30563)],[LatLng(37.40562, 25.31525)],[LatLng(37.41816, 25.31937)],[LatLng(37.42307, 25.3228)],[LatLng(37.40889, 25.33104)],[LatLng(37.4078, 25.33722)],[LatLng(37.41598, 25.33791)],[LatLng(37.40344, 25.35027)],[LatLng(37.40726, 25.3688)],[LatLng(37.42253, 25.39009)],[LatLng(37.4138, 25.39902)],[LatLng(37.42907, 25.4052)],[LatLng(37.42961, 25.41962)],[LatLng(37.44215, 25.42442)],[LatLng(37.44543, 25.45807)],[LatLng(37.46287, 25.4615)],[LatLng(37.47595, 25.46013)],[LatLng(37.47104, 25.42786)],[LatLng(37.48249, 25.42923)],[LatLng(37.48358, 25.41)],[LatLng(37.49502, 25.40588)],[LatLng(37.49447, 25.38597)],[LatLng(37.49066, 25.3791)],[LatLng(37.46941, 25.38254)],[LatLng(37.46178, 25.37773)],[LatLng(37.4754, 25.35988)],[LatLng(37.4972, 25.35782)],[LatLng(37.50047, 25.34203)],[LatLng(37.49774, 25.32761)],[LatLng(37.49229, 25.3228)],[LatLng(37.4912, 25.3125)],[LatLng(37.4814, 25.30907)],[LatLng(37.47268, 25.31113)],[LatLng(37.46341, 25.32692)],[LatLng(37.44597, 25.32692)],[LatLng(37.42798, 25.3228)],[LatLng(37.43943, 25.30563)]".split("],[");
var b = a.map(function(x) { 
    var couple= (/\d+.\d+, \d+.\d+/g).exec(x).toString();
    var splitted = couple.split(", ");
    return "["+splitted[1]+","+splitted[0]+"]";
                            } );
b.join(); 

संपादित करें: इस SO उत्तर के अनुसार , जाहिरा तौर पर यह विधि भी है:

L.GeoJSON.coordsToLatLng()

मैं इसका इस्तेमाल नहीं करता, लेकिन यह आशाजनक लगता है।


1
एक उपयोगी कार्य। अधिकांश इनपुट शायद नंगे समन्वय जोड़ी सूचियों होंगे - हालांकि [[60.672744462452,-135.02487602415],[60.673011537554,-135.02487602415]]। मैंने भी देखा है लेकिन जियोजोन-फ्लिप नोडज मॉड्यूल का उपयोग नहीं किया है ।
मैट विल्की

अपनी तरह के शब्दों के लिए Ty। यह ज्यादातर आखिरी पल का हल था क्योंकि मैं एक टाइट शेड्यूल पर काम कर रहा था। वास्तव में लीफलेट लाइब्रेरी द्वारा वास्तव में ऐसा करने के लिए एक विधि प्रदान की गई है जैसा कि मैंने बाद में सीखा है (अब याद नहीं कर सकते हैं, लेकिन अगर मैं चाहूं तो जांच कर सकता हूं)।
अलेक्जेंड्रोसा

USC विधि का नाम उपयोगी होगा! मैं इसे खोजने में सक्षम नहीं हूं, और ऊपर वर्णित भू-फ्लिप-फ्लिप मॉड्यूल मेरे डेटा के साथ काम नहीं करता है।
मैट विल्की

टर्फ में कुछ मिला , जो एक बड़ा समर्थित मॉड्यूल है: turfjs.org/docs/#flip
मैट

1
हे, लंबे समय से देरी के लिए खेद है, लेकिन यहाँ मैं क्या बात कर रहा था: stackoverflow.com/questions/35983078/…
alexandros84
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.