मेरे पास एक खुले डेटा एपीआई से जेसन है जिसे मुझे जियोजोन में बदलने की जरूरत है ताकि इसे मेरे मैपबॉक्स मानचित्र पर परत के रूप में प्रदर्शित किया जा सके। मैं Mapbox GL JS लाइब्रेरी का उपयोग कर रहा हूँ: https://docs.mapbox.com/mapbox -gl-js/api/. यहां ओपन डेटा जेसन एपीआई का लिंक दिया गया है: https://data.cityofnewyork.us/ संसाधन/64uk-42ks.json

मैं सफलतापूर्वक जोंस एपीआई ला सकता हूं और इसे कंसोल पर प्रिंट कर सकता हूं, लेकिन अब मुझे इसे जियोजोन में बदलने की जरूरत है। मुझे पता है कि मैं इसे पूरी तरह से फ्रंटएंड कर सकता हूं क्योंकि यह खुला डेटा है।

यहाँ मेरा कोड है:

var map = new mapboxgl.Map({
  container: 'map',
  style: 'mapbox://styles/niki12step/ck8q9fgpx00d91ipipual7mrl', // replace this with your style URL
  center: [-73.961581,40.683868],
  zoom: 9.5
})

var pluto_url = 'https://data.cityofnewyork.us/resource/64uk-42ks.json'

getData();

async function getData () {
   await fetch(pluto_url)
  .then(response => response.json())
  .then(data => console.log(data))
}
1
Niki 11 सितंबर 2020, 01:06

1 उत्तर

सबसे बढ़िया उत्तर

एक GeoJSON फ़ाइल आमतौर पर इस तरह दिखती है:

{
 "type": "FeatureCollection",
 "features": [
   {
     "type": "Feature",
     "geometry": {
       "type": "Point",
       "coordinates": [75, 25]
     },
     "properties": {
        "name": "earth"
     }
   }
 ]
}

"सुविधाएँ" आपकी सभी सुविधाओं की सूची है। प्रत्येक विशेषता "प्रकार", "ज्यामिति" और "गुण" और अंततः "आईडी" कुंजी के साथ एक वस्तु है।

इसका मतलब है कि आपको अपनी JSON फ़ाइल में सभी डेटा बिंदुओं के माध्यम से लूप करना होगा और इसे इस प्रारूप में परिवर्तित करना होगा। यह इस तरह दिख सकता है:

const pluto_url = 'https://data.cityofnewyork.us/resource/64uk-42ks.json';
getData();

async function getData () {
   let mygeojson = {"type": "FeatureCollection", "features": []}
   await fetch(pluto_url)
  .then(response => response.json())
  .then(data => {
    for(let point of data){
      let coordinate = [parseFloat(point.longitude), parseFloat(point.latitude)];
      let properties = point;
      delete properties.longitude;
      delete properties.latitude;          
      let feature = {"type": "Feature", "geometry": {"type": "Point", "coordinates": coordinate}, "properties": properties}
      mygeojson.features.push(feature);
    }
  });
  console.log(mygeojson);
}

मैंने मान लिया था कि आपके पास केवल पॉइंट ज्यामिति हैं। मैंने parsedFloat() का उपयोग किया क्योंकि निर्देशांक आपकी फ़ाइल में स्ट्रिंग के रूप में संग्रहीत हैं, लेकिन GeoJSON प्रारूप में फ्लोट मानों की आवश्यकता होती है। delete properties.longitude और delete properties.latitude के साथ मैं यह हासिल करता हूं कि निर्देशांक गुण क्षेत्र का अनिवार्य रूप से हिस्सा नहीं हैं।

2
Pascalco 11 सितंबर 2020, 21:56