CGI プログラム

GeoNLP ソフトウェアに含まれる CGI プログラムについて説明します。

geonlp_cgi

インストール を実行すると、インストールディレクトリに geonlp_cgi という実行可能ファイルが生成されます。このプログラムを Apache の CGI ディレクトリに配置すると、 CGI プログラムとして機能します。

% sudo cp /usr/local/bin/geonlp_cgi /var/www/cgi-bin/

CGI ディレクトリは Apache の設定によって異なりますので、配置先はウェブサーバの管理者に確認してください。

使い方

設置した geonlp_cgi に HTTP で JSON-RPC リクエストを POST すると、テキストを処理してレスポンスが返されます。利用可能なメソッドや書式については WebAPI を参照してください。

なお、ローカルサーバに設置した geonlp_cgi にアクセスする場合には API キー は不要です。

使用サンプル

CGI プログラムを利用した簡単な使用サンプルを示します。

このサンプルは、テキストボックスに入力された文章を、ローカルサーバの geonlp_cgi プログラムに渡して解析し、結果の GeoJSON を Leaflet で地図上に描画します。

HTML ファイルを ここからダウンロード して、ウェブサーバ上に配置してください。たとえば /var/www/html/example.html という名前で配置します。

その後、ウェブブラウザで配置したページにアクセスすると、次のような画面が表示されます。テキストエリアに地名や住所を含むテキストを入力し、「解析」ボタンを押すと、抽出された地名に対応する場所にオレンジ色の丸印が表示されます。

図では「東京都」に対応する点(都庁の位置)にマークがついています。今のところ GeoNLP は点の情報しか持っていないため、「東京都」に対応する「領域」ではなく「代表点」の座標が返されることに注意してください。

../../_images/example.png

このサンプルの HTML コードは以下の通りです。

<!DOCTYPE html>
<html>
<head>
  <title>Leaflet+GeoNLP Example</title>
  <meta charset="utf-8" />

  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.css" />
  <script src="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.js"></script>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
</head>
<body>

<textarea id="textarea" rows="5" style="width:600px">今日は東京都全域で雨が降りました。</textarea><br />
<input type="button" id="submit" value="解析" /><br />
<div id="map" style="width: 600px; height: 400px"></div>

<script>
var map = L.map('map').setView([35.7, 139.7], 8);
L.tileLayer('http://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png', {
  attribution: "<a href='http://maps.gsi.go.jp/development/ichiran.html' target='_blank'>地理院タイル</a>"
}).addTo(map);

geojsonMarkerOptions = {
  radius: 8,
  fillColor: "#ff7800",
  color: "#000",
  weight: 1,
  opacity: 1,
  fillOpacity: 0.8
};

var pointLayer = null;
$("#submit").click(function() {
  var request = {"method":"parse", "params":[$("textarea").val()], "id":0};
  var request_json = JSON.stringify(request);
  $.ajax({
    type: "POST",
    url: "/cgi-bin/geonlp_cgi",
    data: request_json,
    dataType: "JSON"
  }).done(function(json) {
    if (pointLayer) map.removeLayer(pointLayer);
    pointLayer = L.geoJson(json['result'], {
      pointToLayer: function(feature, latlng) {
        return L.circleMarker(latlng, geojsonMarkerOptions);
      }
    });
    map.addLayer(pointLayer);
  }).fail(function(data) {
    alert(data);
  });
});

</script>

</body>
</html>

ショートカットリンク

目次

前のトピックへ

GeoNLP 辞書管理ユーティリティ

次のトピックへ

クイックスタート