web-dev-qa-db-ja.com

住所を緯度/経度に変換する方法は?

住所または都市を緯度/経度に変換するにはどうすればよいですか?このサービスを「レンタル」できる商業服はありますか?これは、フルタイムのインターネットアクセスが可能なWindows PCの商用デスクトップアプリケーションで使用されます。

69
swilc0x

GoogleにはジオコーディングAPIがあり、Google Mapsデータがあるほとんどの場所で非常にうまく機能しているようです。

http://googlemapsapi.blogspot.com/2006/06/geocoding-at-last.html

JavaScriptを介したオンラインジオコーディングを提供します。

http://code.google.com/apis/maps/documentation/services.html#Geocoding

または、バックエンドジオコーディング(HTTPリクエスト経由):

http://code.google.com/apis/maps/documentation/services.html#Geocoding_Direct

データは通常、Googleマップ自体で使用されるものと同じです。 (データが異なるソースからのものであり、品質がわずかに低下している英国やイスラエルなど、これにはいくつかの例外があることに注意してください)

47
mopoke

追加することはあまりありませんが、GISと以前の仕事からのジオコーディングの実世界での経験が豊富です。ここに私が覚えているものがあります:

アプリケーションで「たまに」必要な場合は、GoogleまたはYahoo Geocoding APIをお勧めしますが、それらのライセンス条項を注意深くお読みください。

一般に、Google Maps APIは商用のWebページでも簡単にライセンスを取得できますが、有料アクセスの状況では使用できません。言い換えれば、あなたはそれを使って広告収入を促進するサービスを宣伝したり提供したりすることができますが、あなたのサイトにアクセスしたり、パスワードシステムの背後に置いたりすることはできません。

これらの制限にもかかわらず、ストリートデータベースを頻繁に更新するため、どちらも優れた選択肢です。無料のバックエンドツールとライブラリのほとんどは、めったに更新されない国勢調査とTIGER道路データを使用するため、急速に成長している地域や新しい区画の住所をジオコーディングできません。

ほとんどのサービスでは、1日に作成できるジオコーディングクエリの数も制限されているため、データベースに追加された新規顧客などの住所を検索しても問題ありませんが、データベースをジオコーダーに入れると、シャットオフされます。

これについてはまだ言及されていないと思いますが、ESRIには ArcWeb Webサービス にはジオコーディングが含まれていますが、それほど安くはありません。前回使用した場合、ルックアップごとに約1.5セントの費用がかかりましたが、開始するには一定額を前払いする必要がありました。繰り返しますが、主な利点は、使用する道路データがタイムリーに最新の状態に保たれ、Googleが許可していない商業的な状況でそのデータを使用できることです。 ArcWebサービスは、高解像度の衛星写真や航空写真a laGoogleマップも提供します。これもリクエストごとに料金が設定されます。

自分でロールバックしたり、より正確なデータにアクセスしたい場合は、 TeleAtlas のような会社からGISデータのサブスクリプションを購入できますが、それは安くはありません。非常にローカルなニーズがある場合は、州または郡に相当するデータのみを購入できます。データにはいくつかの層があります-GIS機能のみ、GISと詳細な道路、すべてがジオコードデータ、そのすべてがルーティングの交通流/方向/速度制限に加えて。もちろん、階層を上げると価格は上がります。

最後に、ウィキペディアの Geocoding の記事には、アルゴリズムと技術に関するいくつかの良い情報があります。独自のコードで実行していない場合でも、さまざまな種類のデータソースからどのようなエラーと精度が期待できるかを知ることは役立ちます。

25
CMPalmer

Yahoo!Maps Web Services-Geocoding API GoogleのAPIとは異なり、英国の郵便番号を正確にジオコーディングします。

残念ながらyahooはこのサービスを廃止しました。 http://developer.yahoo.com/geo/placefinder/ yahooのサービスにアクセスできます

11
David
10
Ben Dehghan

以前にこれに対する独自のソリューションを展開してきたので、このために Geo :: Coder :: US Perlモジュールを心からお勧めします。国勢調査のデータをすべてダウンロードし、付属のインポーターを使用して、お住まいの国のBerkeley DBを作成し、Perlスクリプトを指定します。モジュールのビルトインアドレス解析を使用すると、オフラインジオコーディングシステムが手に入ります。

5
willasaywhat

住所またはオブジェクトを緯度/経度に変換するときは、ジオコーディングと呼ばれます。

周囲には多くのジオコーディングソリューションがあります。プロジェクトに適したソリューションは、各ジオコーディングソリューションのライセンス条項の受け入れ可能性に依存します。 Microsoft Virtual EarthとGoogle Mapsはどちらも、非常に厳しいライセンスの下で自由に使用できるソリューションを提供しています...

http://code.google.com/apis/maps/documentation/services.html

http://www.Microsoft.com/virtualearth/product/faq.aspx

5
Michael

このコードで試してみてください、私はアドレスでこのように働きます:

これは、GETメソッドを使用してリクエストを送信し、latおよびlngを取得するリンクです。http://maps.google.com/ maps/api/geocode/json?address = YOUR ADDRES&sensor = false

例:http://maps.google.com/maps/api/geocode/json?address=W Main St、Bergenfield 、NJ 07621&sensor = false

1。 GETメソッドを作成します。

 public static String GET(String url) throws Exception {//GET Method
        String result = null;
        InputStream inputStream = null;
        try {
            HttpClient httpclient = new DefaultHttpClient();
            HttpGet httpGet = new HttpGet(url);

        Log.v("ExecuteGET: ", httpGet.getRequestLine().toString());

        HttpResponse httpResponse = httpclient.execute(httpGet);
        inputStream = httpResponse.getEntity().getContent();
        if (inputStream != null) {
            result = convertInputStreamToString(inputStream);
            Log.v("Result: ", "result\n" + result);
        } 
    } catch (Exception e) {
        e.printStackTrace();
    }
    return result;
}

2。リクエスト送信用のメソッドを作成します

@SuppressWarnings("deprecation")
    public static String getLatLng(String accessToken) throws Exception{
        String query=StaticString.gLobalGoogleUrl+"json?address="+URLEncoder.encode(accessToken)+"&sensor=false";
        Log.v("GETGoogleGeocoder", query+"");
        return GET(query);
    }

gLobalGoogleUrl= "http://maps.google.com/maps/api/geocode/"

3。メソッドgetLatLngを呼び出します

String result=getLatLng("W Main St, Bergenfield, NJ 07621");

4。 JSONObjectの解析

これで、resultJSONObjectであり、アドレスとlan、lngに関する情報が含まれています。 JSONObject(結果)を gson() で解析します。その後、lat、lngを使用します。

コードについて質問がある場合は、質問してください。

4
MilanNz

ジオコーディングアプリケーションが必要です。これらは、オンラインまたはアプリケーションバックエンドとして利用できます。

2

Maptsraction( http://www.mapstraction.com )では、任意の数のジオコーディングサービスから選択できます。 Googleには1日にできる回数に制限があるので、大量に行う必要がある場合に役立ちます。

2
ian93

Virtual Earth 実行します。 geocoder.us にもWebサービスがあります

2
Charles Graham

OpenStreetMapNameFinder (または現在の Nominatim )を試すこともできます。これには、(潜在的に)全世界。

2
peSHIr

bingマップのsoapサービスを使用できます。逆ジオコードサービスを参照して、ここのアドレスからlat/longを見つけることができます http://msdn.Microsoft.com/en-us/library/cc980922.aspx

1
Blazen

あなたはジオコーダーについて尋ねています。 GoogleはこのためのAPIを提供しています。他のプロバイダーも同様です。

現在の場所.netで実装のデモを見ることができます

0
0

リストにもう1つ追加すると思います。テキサスA&Mのサービスはかなりお手頃です: http://geoservices.tamu.edu/Services/Geocode/

ジオコードするアドレスのセットが非常に多く、GoogleやMicrosoftに10kをパッティングしたくない場合に適したオプションです。最終的には、返されたデータをGoogleマップで使用することになりました。

0
ficuscr

MicrosoftのMapPoint Webサービスを使用できます。

住所をGeoCode(lat/long)に変換する方法について ブログエントリ を作成しました。

0
Stephen Curial