Automating GIS Processes 2024 写経　Lesson 3（Geocoding）

https://autogis-site.readthedocs.io/en/latest/lessons/lesson-3/geocoding.html

またしてもソースコードがありません。

# Overview of Geocoders

> Geocoding is the process of transforming place names or addresses into coordinates. In this lesson we will learn how to geocode addresses using Geopandas and geopy.

> Geopy and other geocoding libaries (such as geocoder) make it easy to locate the coordinates of addresses, cities, countries, and landmarks across the globe using web services (“geocoders”). In practice, geocoders are often Application Programming Interfaces (APIs) where you can send requests, and receive responses in the form of place names, addresses and coordinates.

> Geopy offers access to several geocoding services, including:

ジオコーディング＝地名や住所を座標に変換する、です。このレッスンでは、`Geopandas`と`Geopy`による手法を学びます。

`Geopy` などやほかのライブラリ(例えば`geocoder`) はWeb サービス (ジオコーダー) を使用して、世界中の住所、都市、国、ランドマークの座標を簡単に見つけることができます。ジオコーダーはAPIであり、リクエストを送信し、地名、住所、座標のレスポンスを受け取ることができます。

`Geopy`により、いくつかのジオコーディングのサービスへのアクセスができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4076503/3eefb441-3f4c-4eb7-a1dc-0a4998779f96.png)

https://geopy.readthedocs.io/en/stable/
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4076503/f8e08337-72f1-4099-b4e2-27dea5c7d961.png)


> As you see, there are plenty of geocoders where to choose from! The quality of the geocoders might differ depending on the underlying data. For example, some addresses might exists on OpenStreetMap, but not on Google Maps and thus they can be geocoded using the Nominatim geocoder, but not using the Google Geocoding API - and vice versa.

各ジオコーダーの品質は、依存しているデータによってばらつきがあるかもしれません。たとえば、一部のアドレスは OpenStreetMap にあるが、Google マップにはないかもしれない。Nominatim ジオコーダを使用してジオコーディングできても、Google Geocoding API を使用してジオコーディングできないかもしれない。

> Geocoding services might require an API key in order to use them. (i.e. you need to register for the service before you can access results from their API). Furthermore, rate limiting also restrict the use of these services. The geocoding process might end up in an error if you are making too many requests in a short time period (eg. trying to geocode large number of addresses). See hints for dealing with rate limiting when geocoding pandas DataFrames from the geopy documentation. If you pay for the geocoding service, you can naturally make more requests to the API.

サービスはAPIキーを必要とするかもしれません。言い換えると、サービスを使う前にユーザー登録が必要です。さらにいうと、呼び出し回数の制限もあります。短期間にリクエストをしすぎるとエラーになるかもしれません。（例えば多くの住所をジオコーディングしようとする場合）
呼び出し回数の制限に対処する方法については[geopy documentation](https://geopy.readthedocs.io/en/stable/#usage-with-pandas) のヒントを見てください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4076503/27b5f12a-5375-4bfe-b348-a404c2fae319.png)

使用料を払えば、API に対してより多くのリクエストをすることができます。（それはそう）

> In this lesson we will use the Nominatim geocoder for locating a relatively small number of addresses. Usage of the Nominatim geocoding service is rate-limited to 1 request per second (3600 / hour). You can read more about Nominatim usage policy in here

> Luckily, Nominatim, which is a geocoder based on OpenStreetMap data does not require a API key to use their service if it is used to geocode only a small number of addresses.

> Always check the terms of service of the geocoding service that you are using!

> As noted in the geopy documentation for the Nominatim geocoder we need to specify a custom user_agent parameter when making requests not to violate the Nominatim Usage Policy.

このレッスンでは、Nominatim geocoderを使います。1秒あたり1リクエスト(3600 /時間)の制限があります。詳細[こちら](https://operations.osmfoundation.org/policies/nominatim/)。
NominatimはOpenStreetMapデータを使っており、小規模の使用ならば、APIキーを必要としません。

使用規約は常に確認するようにしましょう。

[geopy documentation for the Nominatim geocoder](https://geopy.readthedocs.io/en/stable/#nominatim)にあるとおり、Nominatim Usage Policyに違反しないようにリクエストを行う場合は、カスタム user_agent パラメータを指定する必要があります。