PostGIS के साथ रिवर्स जियोकोडिंग करने का सबसे अच्छा तरीका क्या है?


13

क्या PostGIS के साथ रिवर्स जियोकोडिंग करने का एक तरीका है? वेब पर बहुत सारी जानकारी है, लेकिन मुझे यह बहुत भ्रामक लगी ...

मैंने अपने स्वयं के Postgres में PostGIS डेटाबेस के साथ osm डेटा आयात किया है। अब मैं अपने डेटाबेस के साथ जियोकोडिंग और रिवर्स जियोकोडिंग बनाना चाहता हूं। मुझे नहीं पता कि क्या कुछ संग्रहित प्रक्रियाएँ हैं, या कहीं एक परियोजना है जो मेरे मुद्दे का ध्यान रखती है।

अगला कदम जो मैं करना चाहता हूं वह एक वेबसेवा है जो इस तरह के अनुरोधों को संभाल सकता है, लेकिन यह एक और सवाल है।


जब आप रिवर्स जियोकोडिंग के लिए इस साइट पर खोज करते हैं तो कुछ परिणाम मिलते हैं । एक उत्तर जो खड़ा है वह यह है कि इसे प्रदान करने वाली सेवाओं के बारे में।
dassouki 17

आपका प्रश्न थोड़ा अस्पष्ट है। क्या आपको कोई विशेष समस्या है? या क्या आपको जियोकोडिंग को उलटने के लिए सामान्य दृष्टिकोण की मदद चाहिए?
सीन

मैंने पहले से ही Nominatim का उपयोग करने की कोशिश की है, लेकिन मेरे पास "गजेटियर" आउटपुट का उपयोग करने के मुद्दे थे। हर बार जब मैं ऑस्म डेटा आयात करता हूं तो यह "सेगमेंटेशन फॉल्ट" फेंकता है।
जोकिन एम

जवाबों:


14

अंत में, मैं अपने पोस्टगिस डेटाबेस के साथ जियोकोड और रिवर्स जियोकोड करने का तरीका समझता हूं। मैंने एक संग्रहीत प्रक्रिया बनाई जो ज्यामिति प्रकारों को खोजती है जो एक बिंदु के पास हैं। यह संग्रहित प्रक्रिया निकटतम बिंदुओं को प्राप्त करने के लिए दूरी फ़ंक्शन का उपयोग करती है। उसके बाद, मैंने एक RESTful API बनाया है जो रिवर्स जियोकोडिंग अनुरोधों को हल करने के लिए इस संग्रहीत प्रक्रिया को कॉल करता है।

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

आशा है कि यह किसी की मदद करता है।

CREATE OR REPLACE FUNCTION reverse_geocode (lat double precision, lon double precision)
RETURNS text AS 
$BODY$ 
declare  point geometry;  rec record;  geocode text; 
begin  
    point := geomfromtext('POINT('||lat||' '||lon||')', 4326);  
    select name, distance(way, point) as dist  
    into rec  from mapserverdb_point  
    order by dist asc limit 1;  
    geocode := rec.name;  
    return geocode; 
end; 
$BODY$   
LANGUAGE plpgsql; 

क्या हम प्रक्रिया देख सकते हैं?
canisrufus

बेशक: CREATE OR REPLACE FUNCTION reverse_geocode(lat double precision, lon double precision) RETURNS text AS $BODY$ declare point geometry; rec record; geocode text; begin point := geomfromtext('POINT('||lat||' '||lon||')', 4326); select name, distance(way, point) as dist into rec from mapserverdb_point order by dist asc limit 1; geocode := rec.name; return geocode; end; $BODY$ LANGUAGE plpgsql;
जोआकिन एम

4

PostGIS 2.0 टाइगर जियोकोडर में टाइगर डेटा का उपयोग करने वाला एक रिवर्स जियोकोड है। जियोकोडर पोस्टजीआईएस 1.5 8.4+ या उच्चतर पर ठीक स्थापित करेगा।

यदि आप यूएस में हैं, तो उपयोग करने में सबसे आसान हो सकता है क्योंकि यह सभी plpgsql फ़ंक्शन के रूप में पैक किया गया है।

http://www.postgis.org/documentation/manual-svn/Extras.html#Tiger_Geocoder http://www.postgis.org/documentation/manual-svn/Reverse_Geocode.html


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