PostGISでリバースジオコーディングを行う最良の方法は何ですか?


13

PostGISでリバースジオコーディングを行う方法はありますか?Webには多くの情報がありますが、非常に紛らわしいことがわかりました...

osmデータをPostGISデータベースを使用して自分のPostgresにインポートしました。次に、データベースを使用してジオコーディングとリバースジオコーディングを行います。ストアドプロシージャがあるかどうか、または私の問題を処理するプロジェクトがあるかどうかはわかりません。

次のステップは、この種のリクエストを処理できるWebサービスを作成することですが、それは別の質問です。


このサイトでリバースジオコーディングを検索すると、いくつかの結果があります。際立った答えの1つは、それを提供するサービスに関するこれです。
dassouki

あなたの質問は少しあいまいです。あなたが持っている特定の問題はありますか?または、リバースジオコーディングの一般的なアプローチで支援が必要ですか?
ショーン

すでにNominatimを使用しようとしましたが、「gazetteer」出力の使用に問題がありました。osmデータをインポートするたびに、「セグメンテーションフォールト」がスローされます。
ホアキンM

回答:


14

最後に、PostGISデータベースでジオコードとリバースジオコードを行う方法を理解しました。ポイントに近いジオメトリタイプを見つけるストアドプロシージャを作成しました。このストアドプロシージャは、距離関数を使用して最も近いポイントを取得します。その後、このストアドプロシージャを呼び出すRESTful APIを作成して、逆ジオコーディングリクエストを解決しました。

間違っている場合は修正してください。しかし、NominatimプロジェクトがOSMからインポートされたデータベース用の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;
ホアキンM

4

PostGIS 2.0 tigerジオコーダーには、Tigerデータを利用するリバースジオコーダーがあります。ジオコーダーは、PostGIS 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


ありがとう。逆ジオコードに米国の情報は必要ありませんでした。これで、PostGISデータベースでリバースジオコードが機能する方法がわかりました。どうもありがとう。
ホアキンM
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.