如何将lat / long从Leaflet CRS.Simple转换为EPSG:4326

时间:2015-01-05 02:58:36

标签: java leaflet vaadin7 topology jts

我使用v-leaflet(0.61)(一个vaadin插件)来显示地图上的某些图层。

点击地图,我为geoserver创建了一个wms查询。 查询需要一些参数,其中一个是bbox。 我认为,默认情况下,地图返回的bbox位于CRS.Simple中,这是一个神秘的传单坐标系。

即使我设置了属性

  leafletMap.setCrs(Crs.EPSG3857);

  myoverlayer.setCrs(Crs.EPSG3857);

到地图和图层。

我已经使用JTS拓扑套件了解了here从EPSG转换到另一个的方法。

但是我无法找到从leafltet使用的Crs.Simple转换为EPSG(4326更好)的方法。

如果我在地图和图层上设置EPSG3857,它会返回类似于边界框的内容:

  

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

1 个答案:

答案 0 :(得分: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)