検索して緯度と経度の情報を返すことができる、米国向けの無料または手頃な価格のデータベースはありますか?
検索して緯度と経度の情報を返すことができる、米国向けの無料または手頃な価格のデータベースはありますか?
回答:
そのような多くのレコードについては、Webサービスも考慮しないでください。あなたがあなたの仕事を終えることができる前に、彼らはあなたを絞るか、または断ち切ります。
そのため、オプションはローカルで実行することになるため、いくつかの商用または無料のオプションがあります。
無料のオプションでは、空間データベースに読み込む必要がある国勢調査TIGERデータセットが使用されます。PostGIS またはsqliteのTIGERに対してジオコーディングするライブラリを見つけることができます。ちなみに、ArcGISを使用してTIGERに対してジオコーディングすることもできます。もちろん、ArcGISは無料ではないので、次の商用オプションを紹介します。ArcGISライセンスをお持ちの場合は、TeleAtlas(つまりTom Tom)またはNavteqデータセットを含むStreetMap DVDがあります。StreetMap Premiumがバンドルされているかどうかによります。これら2つのデータセットのいずれでも、TIGERよりも一貫した結果が得られる可能性があります。
データをロードしたら、ストリートデータベースのコピーをいくつか作成し、入力データのサブセットを使用して複数のマシンでジオコーディングプロセスを実行します。1台のマシンだけで実行しないでください。実行するプロセスが終了するまでにメモリリークとクラッシュが数回発生する可能性が高いことは言うまでもありません。これは、プロセスに異なるチェックポイントが必要であることを意味します。
私はSmartyStreets(住所確認会社)で働いています。私たちのサービスは誰でも無料です(基本レベルまで)。また、スタートアップ企業は、最初の1年間は完全に無料でサービスを使用するようにリクエストできます。その分類に当てはまる場合、1年間の無制限のサービスに料金はかかりません。
RagiはWebサービスをお勧めしますが、APIを使用すると、約5時間(1秒あたり約1000)で2,000万のアドレスを簡単にクリーニング、標準化、ジオコーディングできます。その時間の一部は、マシンの速度(コアの数)とネットワーク接続(3Gで試してはいけませんが、標準のブロードバンド接続で十分です)に依存します。
ウェブサービスで確かに可能であることを指摘したかっただけです。
更新:2017年8月1日の時点で、Webサービスをリモートでテストし、ワイヤレスネットワーク上で単一の2015 MacBook proのみを使用して、1秒あたり70,000回のルックアップを持続的に取得しました。ええ、かなり速いです。つまり、2,000万件のアドレスのような小さなリストでは、約5分しかかかりません。
このチュートリアルでは、2010 TigerLineデータを使用してpostgisジオコーダーを構築する方法を説明しました。私は今それを実行しています-200万件の住所をジオコーディングするのに3週間かかるため、高速ではありません。
ただし、無料で調整されておらず、ジオコーディングを開始するために1つの(大)状態のデータをセットアップしてロードするには、2日未満の最小限のコーディングおよびpostgresスキルを持つ人が必要でした。また、システムのpostgresチューニングはまったく行っておらず、NFSマウント上で実行されているため、必要に応じて1桁または2桁のパフォーマンス向上が得られると思います。
Webサービスを使用するのではなく、すべてのアドレスをpostgresデータベースにロードしてから、迅速かつダーティなperlスクリプトを実行して、一度にすべてをジオコーディングします。
perl -e for ($i=1; $i<[max_key_value]; $i+=1)
{printf "UPDATE source_addresses
SET (rating, new_address, lon, lat)
= (g.rating, pprint_addy(g.addy),
ST_X(g.geomout), ST_Y(g.geomout) )
FROM (SELECT DISTINCT ON (address_id) address_id, (g1.geo).*
FROM (SELECT address_id, (geocode(address)) As geo
FROM source_addresses As ag
WHERE ag.rating IS NULL and address_id = $i
) As g1
ORDER BY address_id, rating LIMIT 1
) As g WHERE g.address_id = source_addresses.address_id;\n"
} | psql -d geocoder
(読みやすさのためだけに改行します)
そのため、「このID値でアドレスをジオコーディングし、最適な一致を使用する」更新ステートメントを生成し、それをpsqlにパイプして実行します。評価なしで住所のジオコーディングのみを試みます。つまり、まだジオコーディングされていない住所です。したがって、再起動可能であり、それぞれが独立して実行されます。
Webサービスの品質(精度、スケールなど)が変わるため、データの場所は非常に重要です。GoogleAPI、Facebook API、およびex-simplegeoからのアドレスをジオデータベースでジオコーディングします。
http://blog.programmableweb.com/2012/06/21/7-free-geocoding-apis-google-bing-yahoo-and-mapquest/
この投稿は、おそらく元のポスターを助けるには遅すぎます。ただし、大量のデータを無料でジオリファレンスする場合は、独自に作成され、使いやすく、しかも強力な「Easy Georeferencer」というソフトウェアをチェックできます(投稿の下部のスクリーンショットを参照)。
このプログラムはシンプルで簡単に使用でき、インストールを必要としないexeファイルから直接実行されます。GNSまたはGeoNamesデータソース間でジオコーディングすることを選択できます。これまで他のジオコーダーではできなかったこと、GADM管理単位データベースに基づいた州のジオコーディング、CShapesデータセットからの歴史的な国境のジオコーディングが可能です。唯一の注意点は、住所データをジオコーディングしないことです。すべての出力は、GISで即座に視覚化/分析できるシェープファイルとして提供されます。
大きなデータの効率と処理に関しては、わずか3時間で10万件のレコードをジオコーディングするようにプログラムがテストされています。大規模なデータセットの場合、処理時間の予想される増加は曲線的に減少するはずです。これは、国の参照データセットが読み込まれると、処理時間の大部分が初期段階のみになり、その後に増加するためです。また、ソフトウェア、参照データセット、および処理はすべてローカルコンピューターに基づいているため、大きなデータセットをジオコーディングする際にインターネットのボトルネックや接続の問題を心配する必要はありません。一致率は、スペルの違いに対するファジー名の一致アカウンティングに基づいているため、最大80〜90%になる可能性があります。
入門書や初心者向けガイドなど、詳細はダウンロードパッケージに含まれています。試してみることをためらう必要はありません。プログラムは単純なファイルであり、デスクトップに配置して実行することができます。
ソフトウェアは、http://geocodeanything.wordpress.com/からダウンロードできます。
お役に立てば幸いです。
米国の住所をジオコーディングするため、Data Science Toolkit のStreet Address to Coordinatesツールはうまく機能すると思います。
This API takes either a single string representing a postal address, or a JSON-encoded array of addresses, and returns a JSON object with a key for every address. The value for each key is either null if no information was found for the address, or an object containing location information, including country, region, city and latitude/longitude coordinates.
ただし、仮想マシンをダウンロードして、独自のハードウェアから実行することもできます。そうすれば、APIの制限を心配する必要がなく、それも管理できます。ああ、私はそれが無料だと言いましたか?;-)
私はあなたが必要とする精度のレベルへの参照を見ていませんが、私はあなたが屋上に長い緯度またはそれに近いたいと思っています。入力住所の品質も要因となります。きれいに仕上げられたアドレスのリストは、不完全または不良のアドレスのリストよりも優れた高速なコードになります。また、90%のヒット率は許容されますか、または2000万個のアドレスすべてをコーディングする必要がありますか?私には無料のソリューションはありませんが、私が知っていて使用している比較的安価なソリューションがあります。Semaphore CorpのZP4、http://www.semaphorecorp.com/住所スクラバー/ジオコーダーを提供し、住所を処理し、クリーンな住所、住所がUSPS配達可能かどうかを示すフラグ、およびZIP + 4の長い緯度を返すアドオンを提供します。一般的に、ZIP + 4精度は、市街地の屋上精度(通りの正しい側と正しいブロック上)に近く、農村部では近くありません。30日間のライセンスの費用は120ドルです。その後、住所スクラバーは引き続き機能しますが、配信ポイント検証(DPV)および地理的リターンは機能しません。過去2年以内に構築された比較的高速なコンピューターと、すべてのデータがローカルに保存およびアクセスされると、2,000万件のレコードが約10日で処理されます。私は過去15年間、住所のジオコーディングを行ってきましたが、そのほとんどの期間でZP4を使用してきました。長緯度またはDPVを提供する前に、
現在、1800万の住所をジオコーディングしているので、設定を共有したいと思います。
基本的に、Ansible Playbookを使用してAmazon EC2インスタンスをPostGIS Tiger Geocoderサーバーとして設定し、スクリプトを使用してジオコードアドレスをバッチ処理し、それらを国勢調査ブロックにマップしました。
Amazon EC2のコスト:最小要件の180G SSDは月額約18ドルです。私のt2.largeインスタンスの費用は合計で約90ドル/月です。
SSDが180Gを超えるLinuxボックスをお持ちの場合は、基本的に無料で使用することもできます。
私の平均パフォーマンスは、約170〜300ミリ秒/品質の良いアドレス、400〜600ミリ秒/品質の悪いアドレスです。品質が悪いということは、多くの都市、市区町村、郵便番号、または住所が間違っていることを意味します。この種類の住所はジオコーディングに非常に長い時間がかかるため、パフォーマンスは入力の品質に依存します。私が使用したAmazon EC2インスタンスは、1か月で約400万の非常に不適切な形式の住所をジオコーディングできます。
詳細については、システムのセットアップとスクリプトに関する私のブログ投稿を参照してください
AWSでは現在、多数のジオコーディングサーバーを利用できます。独自のサーバーを取得し、そこにデータをダンプします。https://aws.amazon.com/marketplace/search/results/ref=dtl_navgno_search_box?page=1&searchTerms=geocode
ワークフローがPythonである場合、geopyは優れたソリューションです。基本的なジオコーディングロジックを抽象的に記述してから、多くのプロバイダー(ArcGIS、Baidu、Bing、DataBC、GeocodeFarm、GoecoderDotUS、GeoNames、Google、IGN France、LiveAddress、NaviData、Nominatim(OSM)、OpenCage、OpenMapQuest、 Yahoo! BOSS Place Finder、What3Words、Yandex ... phew)。それらすべてを使用し、最終的には複数のジオコーディングサービスによる検証を通じて正しいと確信するポイントを選択することもできます。これらのサービスの多くは登録が必要です(すべてではありません)。それらは米国での使用に等しく適していないかもしれませんが、きちんとしたPython関数でそれを行うことの利点は、そのために制御できるべきであることです。
以下に簡単な例を示します。
from geopy.geocoders import Nominatim
geolocator = Nominatim(country_bias='New Zealand', timeout=4)
geocoded = geolocator.geocode('Raglan, Waikato', exactly_one=True)
if geocoded is not None:
# success
lat = geocoded.latitude
lon = geocoded.longitude
https://geopy.readthedocs.org/en/1.10.0/
本当に難しいのは、アドレスの形式が間違っていないことを確認することです。ただし、おそらく2,000万の場所をジオコーディングするにはかなりの時間がかかります。そのような負荷は、おそらく誰かの利用規約に違反するでしょう。これが誰かを助けることを願っています。
ジオコードリクエストが1日あたり2,500を超えない場合は、Google Geocoding APIを使用できます。APIをひと目見れば、jsonまたはxmlとして結果に戻ることができます。
使用制限:
Google Geocoding APIの使用には、1日あたり2,500件の位置情報リクエストのクエリ制限が適用されます。(Google Maps API for Businessのユーザーは、1日に最大100,000件のリクエストを実行できます。)
例:
http://maps.google.com/maps/geo?key=yourkeyhere&output=json&q=520+3rd+Street+San+Francisco+CA
結果の例:
{
"name": "520 3rd Street San Francisco CA",
"Status": {
"code": 200,
"request": "geocode"
},
"Placemark": [ {
"id": "p1",
"address": "520 3rd St, San Francisco, Kaliforniya 94107, Amerika Birleşik Devletleri",
"AddressDetails": {
"Accuracy" : 8,
"Country" : {
"AdministrativeArea" : {
"AdministrativeAreaName" : "CA",
"SubAdministrativeArea" : {
"Locality" : {
"LocalityName" : "San Francisco",
"PostalCode" : {
"PostalCodeNumber" : "94107"
},
"Thoroughfare" : {
"ThoroughfareName" : "520 3rd St"
}
},
"SubAdministrativeAreaName" : "San Francisco"
}
},
"CountryName" : "USA",
"CountryNameCode" : "US"
}
},
"ExtendedData": {
"LatLonBox": {
"north": 37.7826364,
"south": 37.7799384,
"east": -122.3942267,
"west": -122.3969247
}
},
"Point": {
"coordinates": [ -122.3955757, 37.7812874, 0 ]
}
} ]
}
Googleのジオコーディングのリンク例を確認できます。
私はそれがあなたを助けることを願っています