OpenStreetMap / PostGIS डेटाबेस में POI के लिए निकटतम शहर कैसे खोजें?


9

मैं OSM डेटाबेस में POI के लिए अतिरिक्त डेटा खोजने में रुचि रखता हूं।

वर्तमान में मैं सभी POI के लिए नाम + लंबे + अक्षांश प्राप्त करने के लिए निम्न SQL का उपयोग कर सकता हूं

SELECT name, 
         x(transform(way, 4326)) AS lon, 
         y(transform(way, 4326)) AS lat
  FROM planet_osm_point 
  WHERE tourism='museum'
UNION
  SELECT name, 
         x(centroid(transform(way, 4326))) AS lon, 
         y(centroid(transform(way, 4326))) AS lat
  FROM planet_osm_polygon 
  WHERE tourism='museum'

मैं निकटतम शहर / शहर या शहर / शहर का नाम भी रखना चाहूंगा जो POI में स्थित है।


क्या आपके पास पहले से ही रिवर्स जियोकोडिंग (स्थान का नाम) प्रणाली स्थापित है?
ब्रैडहार्ड्स

जवाबों:


3

काफी जवाब नहीं जो मैं चाहता था, लेकिन एक आवेदन में प्रयोग करने योग्य: Nominatim को एक क्वेरी बनाएँ

http://nominatim.openstreetmap.org/search?q=45.8364043,24.8345179&format=xml&addressdetails=1


यदि यह आपके प्रश्न का उत्तर देता है, तो कृपया इसे उत्तर के रूप में चिह्नित करें (मतगणना के नीचे ग्रे चेकमार्क)।
चाड कूपर

0

संबंधित प्रश्न से उत्तर निकाला गया :

बहुत आसान लगता है कि तुम अव्यक्त / lngs है।

  1. असमान डेटा srid में lat / lng कन्वर्ट करें
  2. डेटाबेस में आपकी देखभाल करने वाले सभी POI से दूरी की गणना करें।
  3. सबसे छोटी दूरी के साथ पंक्ति उठाओ।
  4. इसके अतिरिक्त, आप अपनी खोज को ब्याज की त्रिज्या तक सीमित कर सकते हैं (5 KM कहिए ..)

एक उदाहरण के रूप में, आइए हमारे POI के पास 5 निकटतम पेट्रोल स्टेशन खोजें।

SELECT osm_id,
       name,
       brand,
OPERATOR,
       ST_Distance(barabara_point.way, st_transform( st_setsrid(st_makepoint(36.768676, -1.289927), 4326), 900913)) AS distance
FROM barabara_point
WHERE ST_DWithin(barabara_point.way, st_transform( st_setsrid(st_makepoint(36.768676, -1.289927), 4326), 900913), 5000)
  AND amenity = 'fuel'
ORDER BY distance;

परिणाम सेट

-[ RECORD 1 ]--------------
osm_id   | 1334386299
name     |
brand    | Kobil
operator |
distance | 244.544617525396
-[ RECORD 2 ]--------------
osm_id   | 915386940
name     | BP
brand    |
operator |
distance | 1012.76398108684
-[ RECORD 3 ]--------------
osm_id   | 1916188670
name     | Shell
brand    |
operator |
distance | 1160.48349020106
-[ RECORD 4 ]--------------
osm_id   | 558923017
name     | Kenol
brand    |
operator |
distance | 1310.22002620899
-[ RECORD 5 ]--------------
osm_id   | 30092081
name     | Caltex
brand    |
operator |
distance | 1419.61102322244
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.