2015-01-05 18 views
1

지도 위에 일부 레이어를 시각화하기 위해 vaadin 플러그인 인 v- 전단 (0.61)을 사용하고 있습니다.전단지 CRS.Simple에서 위도/경도를 EPSG로 변환하는 방법 : 4326

지도를 클릭하면 geoserver에 wms 쿼리가 생성됩니다. 쿼리에 매개 변수가 필요하며 그 중 하나가 bbox입니다. 기본적으로 맵에 의해 반환 된 bbox는 전단계의 신비한 좌표계 인 CRS.Simple에 있다고 가정합니다. 내가지도 및 레이어에 속성

leafletMap.setCrs(Crs.EPSG3857); 

    myoverlayer.setCrs(Crs.EPSG3857); 

모두를 설정 한 경우에도

.

저는 here JTS Topology Suite를 사용하여 EPSG에서 다른 것으로 변환하는 방법을 배웠습니다.

그러나 leafltet에서 사용하는 Crs.Simple에서 EPSG (4326이 더 좋음)로 변환하는 방법을 찾을 수 없습니다.

바운드 : 6.0919189453125, 45.11617660357484, 11.134643554687498, 46.50217348354072

만약 내가 EPSG3857,지도와 레이어를 모두 설정 한 경우

, 그것은 나에게 경계 상자 같은 것을 반환

바운드 : 6.0919189453125, 44.81597900390625, 11.1346435546875,나는 같은 전망과 함께, EPSG4326 설정 46.80450439453125

위도 값만 변경된 것으로 보입니다.

나는 EPSG4326에 EPSG3857에서 변환 할 JTSTool (JTS 토폴로지 스위트)를 사용하는 것도 tryed했습니다과 값은 다음과 같습니다

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

그것은 이상한 소리 ....

누군가가 나를 CRS는 BBOX을 정의하는 데 사용 이해하는 데 도움이 수 있습니까? 아니면 그들을 변형시킬 방법이 있을까요?

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

답변

0

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

클릭 핸들러에서 가져온 것입니다. 난 그냥 문제는 내가 proj4Leaflet이 만약 angel에서 전단지 전에로드 할 수 없습니다 가져올 수 있다는 것입니다 2263.

Point proj = mCrs.Projection.Project(e.Latlng) 
+0

에 그 전단지가 제공 위도와 경도 및 프로젝트를 취할. 그래서 사용할 수 없습니다. –