2

vaadin プラグインである v-leaflet (0.61) を使用して、マップ上にいくつかのレイヤーを視覚化しています。

マップをクリックして、ジオサーバーへの wms クエリを作成します。クエリにはいくつかのパラメーターが必要で、そのうちの 1 つが bbox です。デフォルトでは、マップによって返される bbox は CRS.Simple にあると思います。これはリーフレットの不思議な座標系です。

属性を設定したとしても

  leafletMap.setCrs(Crs.EPSG3857);

  myoverlayer.setCrs(Crs.EPSG3857);

マップとレイヤーの両方に。

ここで、JTS Topology Suite を使用して EPSG から別の EPSG に変換する方法を学びました。

しかし、leafltet で使用される Crs.Simple から EPSG に変換する方法が見つかりません (4326 の方が優れています)。

マップとレイヤーの両方で EPSG3857 を設定すると、境界ボックスとして次のようなものが返されます。

バウンド:6.0919189453125、45.11617660357484、11.134643554687498、46.50217348354072

同じビューで EPSG4326 を設定した場合:

バウンド:
6.0919189453125、44.81597900390625、11.1346435546875、46.80450439453125

緯度の値だけが変更されたようです。

また、JTSTool (jts-topology-suite) を使用して EPSG3857 から EPSG4326 に変換しようとしましたが、値は次のとおりです。

bbox=4.0528551003362907E-4,5.4724638981914947E-5,4.1773613184440224E-4,1.0002420488398699E-4

とても奇妙に聞こえます....

bbox の定義に使用される CRS を理解するのを手伝ってくれる人はいますか? またはそれらを変換する方法はありますか?

"
            CoordinateReferenceSystem sourceCRS = CRS.decode("EPSG:4326");
            CoordinateReferenceSystem targetCRS = CRS.decode("EPSG:3857");
            MathTransform transform = CRS.findMathTransform(sourceCRS, targetCRS, false);
            GeometryFactory geometryFactory = new GeometryFactory(new PrecisionModel(), 4326);
            com.vividsolutions.jts.geom.Point point = geometryFactory.createPoint(new Coordinate(bbb.getSouthWestLon(),bbb.getSouthWestLat() ));
            com.vividsolutions.jts.geom.Point point2 = geometryFactory.createPoint(new Coordinate(bbb.getNorthEastLon(),bbb.getNorthEastLat() ));
            com.vividsolutions.jts.geom.Point targetPoint = (com.vividsolutions.jts.geom.Point) JTS.transform(point, transform);
            com.vividsolutions.jts.geom.Point targetPoint2 = (com.vividsolutions.jts.geom.Point) JTS.transform(point2, transform);"
4

1 に答える 1

1

Proj4Leafletを試しましたか? これを使用して、標準投影と EPSG:2263 の間で変換します。

この最初のコード サンプルは、2263 から標準に変換する方法です。

// Set the view to the centroid of the coordinates
Point p = Leaflet.Point(cx, cy);
// Unproject the geom into latlng
currentCentroid = mCrs.Projection.Unproject(p);

これはクリック ハンドラからのものです。リーフレットが提供する latlng を取得し、2263 に投影します。

Point proj = mCrs.Projection.Project(e.Latlng)
于 2015-01-05T14:13:35.563 に答える