एक विशाल डेटासेट के कुछ हिस्सों को कुशलतापूर्वक दिखाने के लिए USC का उपयोग कैसे करें?


13

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

  1. हजारों वस्तुओं के कुछ डेटासेट हैं।
  2. हम उपयोगकर्ता को एक नक्शा दिखाना चाहते हैं, उनमें से दृश्यमान सबसेट को इंटरएक्टिव, क्लिक करने योग्य तत्वों के रूप में दिखाया गया है।

ऐसा करने के लिए क्या तरीके हैं?

मैं इन पर विचार कर सकता हूं, लेकिन वे बहुत संतोषजनक नहीं हैं, इसलिए मैं सोच रहा हूं कि और क्या है:

  1. एक जेजेन्सन फ़ाइल में सभी डेटा को स्टोर करें, इसे ब्राउज़र में स्थानांतरित करें, और पत्रक को प्रदर्शित करें। समस्या: बड़े डेटासेट के साथ वास्तव में काम नहीं करता है। TopoJSON सीमा को थोड़ा बढ़ा देता है। यह पेज लोड में एक बड़ी देरी का कारण बनता है।

  2. मैपबॉक्स का उपयोग करें, मैपबॉक्स पर एक इंटरेक्टिव लेयर में सभी डेटा को स्टोर करें, और इसे प्रदर्शित करने के लिए मैपबॉक्स का उपयोग करें। महान काम करता है, लेकिन पैसे खर्च होते हैं, और आप इसे स्वयं होस्ट नहीं कर सकते।

  3. PostGIS डेटाबेस तक पहुँचने के लिए GeoServer का उपयोग करें, वहां से डेटा एक्सेस करने के लिए WFS-geojson लीफलेट प्लगइन का उपयोग करें। यह शायद काम करता है, लेकिन WFS-geojson USC प्लगइन अब बनाए रखने के लिए प्रतीत नहीं होता है।

  4. CartoDB का उपयोग करें, सभी डेटा को CartoDB तालिका में संग्रहीत करें, और इसे प्रदर्शित करने के लिए CartoDB.js का उपयोग करें । महान काम करता है, लेकिन बहुत महंगा हो सकता है। इसे स्वयं होस्ट करना संभव है, लेकिन CartoDB स्थापित करना गैर-तुच्छ है।

यह सब मुझे लगता है कि मुझे याद आ रही है कि कुछ बेहतर, मुक्त तरीका होना चाहिए। यह क्या है?

संपादित करें

शायद मैंने WFS-geojson प्लगइन को बहुत आसानी से लिख दिया। एक कांटा है जो अभी भी कुछ गतिविधि देखता है (4 महीने पहले): https://github.com/johanlahti/azgs-leaflet


1
जोंस के लिए जियोसर्वर wfs से बस पूछें?
इयान Turton

ठीक है, अगर मैं सही ढंग से समझता हूं, अगर आप JSON के लिए एक अनुरोध को हार्डकोड करते हैं, तो आप अनिवार्य रूप से इसे संपूर्ण डेटासेट को एक सिंगल JSON ब्लॉब के रूप में स्थानांतरित करने के लिए कह रहे हैं - समाधान की तरह 1. आपको अनुरोध प्राप्त करने के लिए वास्तविक WFS की आवश्यकता है वर्तमान व्यूपोर्ट के लिए, नहीं?
स्टीव बेनेट

फिल्टर wfs नक्शे के सीमा से अनुरोध करते हैं (यह है कि स्वचालित रूप से ऐसा पत्रक नहीं?)
इयान Turton

ऐसा करने के लिए इसे WFS बोलने की आवश्यकता होगी, नहीं? और afaik जो केवल (रखरखाव नहीं) WFS-geojson प्लगइन में मौजूद है?
स्टीव बेनेट

1
WFS कि मुश्किल नहीं है - शायद पत्रक मुद्दा> है
इयान Turton

जवाबों:


4

ठीक है, 2 में मेरी धारणा गलत थी। आप mapbox.js का उपयोग कर सकते हैं। अंतिम परिणाम थोड़ा अलग होगा, मेरा मानना ​​है - मार्कर स्वयं एक स्थिर रेखापुंज परत होगा, लेकिन वे क्लिक करने योग्य होंगे।

बड़े पैमाने पर अन्तरक्रियाशीलता का काम करने वाली कल्पना https://github.com/mapbox/utfgrid-spec है

यह https://github.com/danzel/Leaflet.utfgrid (लीफलेट प्लगइन) और भी mapbox.js में क्लाइंटसाइड लागू किया गया है।

सर्वर इसे https://github.com/mapbox/tilelive.js में कार्यान्वित किया जाता है और इसलिए टाइलगिल जैसे: http://tilemill-server/tile/projectname/7/115/78.grid.json

यह टाइलस्टैच में भी लागू किया गया है, लेकिन टिलस्ट्रीम या एमबीटीलेस-सर्वर नहीं। UTFgrid डेटा को टाइलबिल्म द्वारा mbtiles फ़ाइल में संग्रहीत किया जा रहा है, लेकिन उन लोगों द्वारा अनदेखा किया जाता है।

तो न केवल आप mapbox.com की जरूरत नहीं है, आप भी mapbox.js की जरूरत नहीं है। Mapbox.js ज्यादातर सुविधा के लिए सामान को एक साथ गोंद करने के लिए लगता है: एक एकल कॉल जो एक नक्शे को त्वरित करता है, टाइल लाता है और अन्तरक्रियाशीलता जोड़ता है।

लेकिन अगर आप mapbox.js का उपयोग करते हैं, तो पहेली का एक सा हिस्सा मुझे याद आ रहा है, और वह है टाइलजसन। आप mapbox.json को अपने नक्शे के अनुरूप टाइलजसन फ़ाइल देते हैं।


1

वहाँ भी पत्रक-वेक्टर परतों प्लगइन जो PostGIS सेवाओं के लिए समर्थन किया है http://jasonsanford.github.io/leaflet-vector-layers/demos/postgis-restful-web-service-framework/

इसके द्वारा आप सेवा को फ़िल्टर कर सकते हैं।

मैंने ArcGIS सेवाओं के लिए इस प्लगइन का उपयोग किया है और यह वास्तव में अच्छा रहा है।


0

यदि आप अभी तक समाधान नहीं ढूंढ पाए हैं तो यहां एक है: http://gis.xyz/leaflet.html#

 var owsrootUrl = 'http://217.8.255.188:8080/geoserver/opengeo/ows';

 var defaultParameters = {
     service : 'WFS',
     version : '2.0',
     request : 'GetFeature',
     typeName : 'opengeo:evernote_geom',
     outputFormat : 'text/javascript',
     format_options : 'callback:getJson',
     SrsName : 'EPSG:4326'
};

var parameters = L.Util.extend(defaultParameters);
var URL = owsrootUrl + L.Util.getParamString(parameters);

var WFSLayer = null;
var ajax = $.ajax({
    url : URL,
    dataType : 'jsonp',
    jsonpCallback : 'getJson',
    success : function (response) {
       WFSLayer = L.geoJson(response, {
            style: function (feature) {
                return {
                    stroke: false,
                    fillColor: 'FFFFFF',
                    fillOpacity: 0
                };
            },
            onEachFeature: function (feature, layer) {
                popupOptions = {maxWidth: 600};
                layer.bindPopup('<h4>'+feature.properties.url+'</h4><br>'+feature.properties.title
                    ,popupOptions);
            }
        }).addTo(map);
    }
});

मैं यह नहीं देखता कि यह वर्तमान व्यूपोर्ट के अनुरोध को कैसे सीमित करता है?
अल्फाबेटासैप
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.