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);"