4

マッピングから始めました。パーソナライズされたレイヤーが上にあるフランスの地図を表示したいと思います。

シェープファイル形式のカスタムレイヤーがすでにあります。OpenStreetMapサーバーを作成する必要があるのか​​、それともWebアプリケーションを直接使用できるのかはまったくわかりません。

追加のレイヤーシェープファイル形式で表示をマッピングするための開始点を教えてください。

タスクは複雑だと思いますが、どこかから始めなければなりません...

どうもありがとうございます

4

4 に答える 4

7

それはあなたが何をしたいかによります。大きなシェープファイルですか?

openlayersマップを作成している間、いくつかのことができます。

  • 背景タイル(デフォルトのOSMレイヤー実装)にパブリックオープンストリートマップサーバーを使用し、OSMのベクターフィーチャーレイヤーとしてフィーチャーレイヤー(ポイント、ポリゴン、そこにあるものは何でも)を追加します。シェープファイルからベクターフィーチャを取得するには、次のことができます。
    • それらを適切なGISベースの形式でデータベースにプリロードします。これにより、バウンディングボックスクエリを実行しながら機能を提供できます。これは、1000/10000を超える機能がある場合に必要です。
    • シェープファイルをopenlayersで読み取り可能な形式に変換します(ブラウザーでhttps://github.com/wavded/js-shapefile-to-geojsonを使用するか、 ogr2ogrなどのツールを使用して事前変換します)。
  • または、これらの機能を操作する必要がない場合は、データをOSMデータと組み合わせて、カスタムタイルを作成できます。これはブラウザにとってより軽量ですが、非常に複雑です(DB内のすべてのOSMデータを読み取り、mapnikでタイルを生成します)
于 2012-06-08T18:02:24.867 に答える
2

シェープファイルレイヤーにOpenStreetMap(OSM)を追加する場合は、次のコード行を追加するだけです。

var osm = new OpenLayers.Layer.OSM();
map.addLayer(osm);

わかりませんでしたが、なぜOpenStreetMapサーバーを作成する必要があるのでしょうか。

于 2012-06-01T17:45:07.177 に答える
1

自分でOpenStreetMapサーバーを作成する必要はありません。

カスタムレイヤーをマップに表示する場合は、googleまたはopenstreetmapをベースレイヤーとして使用し、レイヤー(シェープファイルから取得)をマップに表示します。

于 2012-06-07T13:17:04.667 に答える
0

gipong / shp2geojsonを使用できます。最初に、shpファイルをgeojsonデータに変換します。次に、データをマップに追加します。

   var map = new ol.Map({
    layers: [
        new ol.layer.Tile({
            source: new ol.source.OSM()
        })
    ],
    target: 'map',
    view: new ol.View({
        center: [0, 0],
        zoom: 5
    })
});

loadshp({
    url: 'demo/10tnvillage.zip',
    encoding: 'big5',
    EPSG: 3826
}, function(data) {
    var feature = new ol.format.GeoJSON().readFeatures(data, {
        featureProjection: 'EPSG:3857'
    });
    var layer = new ol.layer.Vector({
        source: new ol.source.Vector({
            features: feature
        })
    });
    map.addLayer(layer);

    var extent = layer.getSource().getExtent();
    map.getView().fit(extent, map.getSize());
});
于 2020-08-09T09:00:57.560 に答える