2010-05-08 6 views
2

OpenMap을 사용하고 있으며 com.bbn.openmap.layer.shape.ShapeFile을 사용하여 ShapeFile을 읽었습니다. 바운딩 박스는 위도/경도로 읽습니다 (예 : 39.583642, -104.895486). 바운딩 박스는 왼쪽 아래 점과 오른쪽 위 점으로 포인트가 포함 된 지점을 나타냅니다. OpenMap에서 "라디안"이라고 불리는 "점"은 다음과 같은 다른 형식입니다 : [0.69086486, -1.8307719, 0.6908546, -1.8307716, 0.6908518, -1.8307717, 0.69085056, -1.8307722, 0.69084936, -1.8307728 , 0.6908477, -1.8307738, 0.69084626, -1.8307749, 0.69084185, -1.8307792]이다.경계 상자를 위도/경도로, "점"을 라디안으로하여 ESRI 폴리 라인에 점을 그리는 방법은 무엇입니까?

"0.69086486, -1.8307719"와 같은 점을 일반 그래픽에서 사용할 수있는 x, y 좌표로 변환하려면 어떻게해야합니까?

포인트를 Excel로 가져 와서 그래프로 그리는 것은 주어진 위치 (위도/경도)에서 도로의 곡선과 일치하는 선을 만들기 때문에 일종의 변환이라고 생각합니다. 그러나 축을 수동으로 조정해야하며 지정된 경계 상자가 지정된 점과 다른 형식으로 표시되므로 축 조정 방법에 대한 참조가 없습니다.

ESRI Shapefile 기술 설명에 (http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf) 언급하지 않았습니다.

+0

OpenMap은 당신을 위해 학위로 변환 할 수 있습니다 - 당신은 다음과 같은 클래스와 메소드를 상세히 분석해야합니다. com.bbn.openmap.layer.shape.ESRIPolygonRecord * * * com.bbn.openmap.layer.shape.ESRIPoly.ESRIFloatPoly getDecimalDegrees (유형 ESRIFloatPoly []의 변수 "다각형"참조)(); (방법) – Aaron

답변

1

0.69086486, -1.8307719은 라디안 단위의 위도와 경도입니다.

먼저 각도로 변환하고 (180/pi) 곱하면 테두리 상자와 좌표 사이에 공통 단위가 생깁니다.

그런 다음 다음과 같이 로컬 프레임에 모든 플롯 할 수 있습니다 :

x = (longitude-longitude0)*(6378137*pi/180)*cos(latitude0*pi/180) 
y = (latitude-latitude0)*(6378137*pi/180) 

(latitude0, longitude0를) 참조 점의 좌표는 (예를 들어 경계 상자의 왼쪽 아래) 이 누구의 반경 구형으로 간주 지구의 직교 투영이 6378137.0 m이다 (반 : 설명 - 단위는 각도에 대한 미터 거리를

편집하다 - 주요 WGS84 타원체의 축), 점 (lat0, lon0) OpenMap에서

+0

라디안과 방정식에 대해 옳은 것처럼 보입니다. 방정식이하는 일에 대한 설명은 어떻습니까? ... – Aaron

+0

Aaron은 ColdFusion 코드를 공유하여 Shapefile을 읽으시겠습니까? 트위터에서 같은 이름을 찾아 주셔서 감사합니다. – cfEngineers

0

중심 진수 라디안으로 변환하는 방법에는 여러가지가있다 : 배열 용

Length.DECIMAL_DEGREE.fromRadians(radVal); 
Math.toDegrees(radVal) // Standard java library 

은 ProjMath.arrayDegToRad (double [] radvals);를 사용할 수 있습니다.

마지막주의 사항에주의하여 변환을 수행합니다. 따라서 OMPoly에서 위도/경도 배열을 가져 오는 경우이를 변환하기 전에 먼저 복사본을 만드십시오. 그렇지 않으면 라디안 단위가 될 것으로 예상되는 OMPoly의 내부 좌표가 엉망이됩니다.