Nous recevons souvent des demandes pour utiliser des fonctionnalités de géocodage (obtenir la latitude et la longitude à partir d'une adresse) et de géocodage inverse (obtenir l'adresse à partir de la latitude et de la longitude) côté serveur.ArcGIS fournit une API pratique pour utiliser ces fonctionnalités de géocodage non seulement dans les applications cartographiques côté client, mais aussi côté serveur.
Dans cet article, nous allons présenter comment implémenter une fonctionnalité de géocodage en utilisant JavaScript côté serveur, avec l'environnement d'exécution Node.JS .
Ce dont vous avez besoin pour suivre les étapes
- Un compte développeur ArcGISSi vous n'en avez pas, veuillez suivre les instructions
ici pour en créer un (gratuit). Ce compte vous permettra d'accéder aux services nécessaires pour utiliser les fonds de carte, le géocodage, la recherche d'itinéraires, etc.
Suivez les instructions ici pour créer une clé API (jeton d'accès) permettant d'accéder au service de géocodage.
Node.js doit être installé. Cette fois, nous utiliserons Windows comme environnement local et Visual Studio CodeNode.js pour exécuter le code.
Installation du package ArcGIS REST JS
La façon la plus simple d'implémenter la fonction de géocodage est d'utiliser ArcGIS REST JS avec le service de géocodage.Utilisez Visual Studio Code pour créer un projet Node.jsプロジェクトを作成します。下記の例では、「C:\temp\restjs-geocoding
cd C:\temp\restjs-geocoding
npm init
Ensuite, nous allons référencer deux packages ArcGIS REST . Le premier est le package request, qui contient un helper d'authentification pour valider les requêtes. Le second est le package geocoding,, une bibliothèque permettant d'accéder à diverses opérations de géocodage telles que findAddressCandidates, le géocodage batch avec geocodeAddresses,, le géocodage inverse avec reverseGeocode,, ou encore la complétion automatique d'adresses avec suggest. Ces packages peuvent être installés via la commande suivante utilisant npm.npm を使用します。
npm install @esri/arcgis-rest-request @esri/arcgis-rest-geocoding
スクリプトファイルを作成する
1. Node.js プロジェクトを作成したフォルダに index.js ファイルを作成し、Visual Studio Code でコードを記述していきます。
2. ES モジュールからエクスポートを指定して、必要なコンポーネントを参照します。
import { ApiKeyManager } from '@esri/arcgis-rest-request';
import { geocode } from '@esri/arcgis-rest-geocoding';
3. ArcGIS Developers ダッシュボード に移動して、API キーを取得します。ジオコーディングサービスにアクセスするための許可(Geocoding (not stored))が設定されていることを確認します(API キー作成時にデフォルトで設定されます)。
4. Visual Studio Code で、ApiKeyManager を使用して、リクエストの認証パラメータを定義します。API キーは安全に保管する必要があるため、リポジトリにコミットしないでください。 API キーには、環境変数または外部構成ファイル (.gitignore で無視される) を使用することをお勧めします。
const apiKey = "API キーを入力";
const authentication = ApiKeyManager.fromKey(apiKey);
5. geocodeインポートでジオコーディングサービスにアクセスします。以下のパラメータを指定して geocodeメソッドを使用し、緯度・経度・正確な住所文字列の候補を取得します。最も正確な結果を得るには、以下のように、address (住所文字列)、postal(郵便番号/オプション)、 countryCode(国コード/オプション)、authentication パラメータを使用します。
geocode({
address: "東京都千代田区平河町2-7-1",
postal: "102-0093",
countryCode: "JP",
authentication
});
6. 最後に、アプリケーションを実行する前に、コンソールに結果を出力するコードを追加します。スクリプト ファイル全体は、次のようになります。
import { ApiKeyManager } from "@esri/arcgis-rest-request";
import { geocode } from "@esri/arcgis-rest-geocoding";
const apiKey = "API キーを入力";
const authentication = ApiKeyManager.fromKey(apiKey);
geocode({
address: "東京都千代田区平河町2-7-1",
postal: "102-0093",
countryCode: "JP",
authentication
}).then((response) => {
response.candidates.forEach((res) => {
console.log(res);
})
});
アプリケーションを実行する
Visual Studio Code のターミナル ウィンドウでアプリケーションを実行します。結果は以下の例のようになるはずです。
「Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.」のエラーが出た場合は、package.json に「"type": "module"」を追加します。
結果には、ジオコーディング サービスによって検索された住所の以下の内容が含まれます。複数の住所の候補が含まれる場合もあります。
- location: x(経度)とy(緯度)の値と空間参照。
- score: 検証のために使用される一致の正確さ。100 は完全一致を表し、値が小さくなるほど精度が下がることを表します。
- attributes: デフォルトの戻り値、または検索時に outFields パラメータで指定された値。
ジオコーディングの結果を保存する場合
ジオコーディング結果を保存して再利用したい場合があるかもしれません。例えば、ArcGIS のデータベースではなく自身の持つデータベースに、ジオコーディングサービスを使用して取得した住所文字列や緯度経度の値などを保存して業務で使用するなどが考えられます。
この場合は、結果を保存しない場合と消費する料金が異なるため、ジオコーディングのパラメータに forStorage:true を設定する必要があります。
geocode({
address: "東京都千代田区平河町2-7-1",
postal: "102-0093",
countryCode: "JP",
params: {forStorage:true},
authentication
});
また、API キー作成時に「Geocoding (stored)」の機能を有効化する必要もあります。
ArcGIS Platform を使用した場合のジオコーディングの価格については、こちらのページを参照してください。
まとめ
今回は、Node.js と ArcGIS REST JS を使用してジオコーディング機能を実装する簡単な方法を紹介しました。ArcGIS REST JS には、ルート検索や空間分析など、他にも多くの機能を提供しています。サーバーサイドで、マッピング機能を構築する際には、ぜひご活用ください。
関連リンク
ArcGIS REST JS
ArcGIS Platform