3

API Geonames を使用しますが、アプリケーションはインターネットにアクセスできません。そのため、スタンドアロンで実行する必要があります。Geonames.org からダウンロードするファイルがたくさんあるようですが、リバース ジオコーディングを支援するソフトウェアはありません。緯度/経度を提供し、国コードを返してもらいたいです。データをダウンロードして MySQL データベースに入れることを考えています。

geonames.org のダウンロードで利用できるように、リバース ジオコーディングに使用されるアルゴリズムは何ですか。私のプロジェクトは PHP で書かれています。ありがとう!

4

3 に答える 3

3

Geonamesは、ほとんどの国のデータを提供します。このデータは、MySQL データベースにインポートできます。これは緯度経度を使用して検索できます。

問題は、要件に対してファイル内のデータが多すぎる可能性があることです。必要なすべての国の緯度、経度、国コードを除くすべてのフィールドを削除してから、それらを 1 つのレコードに結合できます。

MySQL クエリ

55 ~ 55.5および-2 ~ country code -1.5 の範囲から選択XXlatlng

これにより、111kM の「ボックス」を超えるデータが取り込まれます。レンジはお好みで変えてください。

下の表から、111kM の「ボックス」は赤道 (0°) でのみ有効であることがわかります。他の緯度では、lng 範囲を増やす必要があります。

    lat                 lng
0°  110.574 km  111.320 km
15° 110.649 km  107.551 km
30° 110.852 km  96.486 km
45° 111.132 km  78.847 km
60° 111.412 km  55.800 km
75° 111.618 km  28.902 km
90° 111.694 km  0.000 km
于 2012-09-26T10:59:13.610 に答える
2

geonames のダウンロードは主に.txtファイルに含まれており、これらは SQLYog を介して mysql データベースにインポートできます。

テーブル構造

CREATE DATABASE geonames;
USE geonames;

CREATE TABLE geoname (
geonameid int PRIMARY KEY,
name varchar(200),
asciiname varchar(200),
alternatenames varchar(4000),
latitude decimal(10,7),
longitude decimal(10,7),
fclass char(1),
fcode varchar(10),
country varchar(2),
cc2 varchar(60),
admin1 varchar(20),
admin2 varchar(80),
admin3 varchar(20),
admin4 varchar(20),
population int,
elevation int,
gtopo30 int,
timezone varchar(40),
moddate date
) CHARACTER SET utf8; 

このテーブルにデータをインポートする MYsql クエリ

LOAD DATA INFILE '/path/to/your/file/geoname.txt' INTO TABLE `geoname`;

すべてが設定された後、緯度/経度に対してこのテーブルをクエリして、国名を取得できます

参照できるリンクはこちら

http://sgowtham.net/blog/2009/07/29/importing-geonames-org-data-into-mysql/

http://forum.geonames.org/gforum/posts/list/732.page

お役に立てれば!

于 2012-09-26T10:48:44.050 に答える
1

あなたが探しているアルゴリズムは、複雑な式よりもデータ構造です。Mysql は、R ツリーと空間インデックス クエリをサポートしています。概念は、境界ボックスとして緯度経度ペアを持つ階層ツリーであり、ツリーのルートは境界ボックス内に全世界を持っています。Kd ツリーも有効です。まれに、クワッドキーまたは空間充填曲線を探したい場合があります。これはフラクタルであり、次元を数値に減らします。公式は H(x,y) = H(x) + H(y) です。フラクタルは、R ツリーでどのように解決されるか分からない近接情報も保持します。

于 2012-09-26T15:33:54.903 に答える