Nomintim を使用して、指定された座標の都市を取得する必要があります。都市とは、国名だけでなく、関連する OSM リレーション/ノードとそのすべてのプロパティを意味します (実際、私は osm_id、osm_type、名前、および座標を非常に気にしています)
編集:コンテキストを追加
ユーザーが場所に投稿を添付できるプラットフォームを運営しています。私は OSM をプライマリ データベースとして使用して、ユーザーが場所を検索できるようにしています。投稿が作成されたら、ビジネス データベースでその場所を参照します。都市と国レベルで投稿を集約できるようにしたいと考えています。したがって、専用のテーブルと典型的な関係を持つものを表します: n-1 都市 n-1 国を配置します。
現在、次のようなクエリで最大レベルの情報 (ズーム = 18) を取得できることがわかっています。
都市名を含む関連情報を生成します:
<reversegeocode timestamp="Thu, 02 Oct 14 15:16:11 +0000" attribution="Data © OpenStreetMap contributors, ODbL 1.0. http://www.openstreetmap.org/copyright" querystring="format=xml&accept-language=fr&lat=43.8338&lon=4.3596&zoom=18&addressdetails=1">
<result place_id="6643770" osm_type="node" osm_id="680342651" lat="43.833464" lon="4.3596107">3, Rue de la République, Écusson, La Placette, Nîmes, Nimes, Gard, Languedoc-Roussillon, France métropolitaine, 30000;30900, France</result>
<addressparts>
<house_number>3</house_number>
<road>Rue de la République</road>
<neighbourhood>Écusson</neighbourhood>
<suburb>La Placette</suburb>
<city>Nîmes</city>
<county>Nimes</county>
<state>Languedoc-Roussillon</state>
<country>France</country>
<postcode>30000;30900</postcode>
<country_code>fr</country_code>
</addressparts>
</reversegeocode>
都市タグの文字列として都市を取得します。しかし、その都市の OSM ポイントを取得したい場合は、別のクエリに進む必要があります。
これを最適化する最善の方法は何ですか?
私は Nominatim の独自のインスタンスを実行しているので、SQL が最適なオプションである場合はおそらく SQL を使用できますが、Nominatim で新しいエンドポイントを作成する必要があり、すべてのメンテナンスが複雑になります...
国にも同じ機能が必要です。
国については、パラメータ zoom=1 がいずれにせよ仕事をするべきであることがわかりました。厳しいことに、都市に対応する信頼できるものはありません。