다각형의 면적을 계산하는 데 사용하려는 위도/경도 좌표 목록이 있습니다. 많은 경우 정확한 결과를 얻을 수 있지만 폴리곤이 커질수록 오류가 발생할 확률이 높아집니다.UTM 좌표를 사용한 면적 계산의 정확한 방법
하면 I가 제 I은 UTM 좌표의 면적을 계산하는 http://www.mathopenref.com/coordpolygonarea2.html를 사용하고, 거기에서
http://www.ibm.com/developerworks/java/library/j-coordconvert/UTM을 이용하여 좌표 변환하고있다.
private Double polygonArea(int[] x, int[] y) {
Double area = 0.0;
int j = x.length-1;
for(int i = 0; i < x.length; i++) {
area = area + (x[j]+x[i]) * (y[j]-y[i]);
j = i;
}
area = area/2;
if (area < 0)
area = area * -1;
return area;
}
은 내가 마이크로 소프트 SQL 서버와는 ArcGIS에 넣어 같은 좌표로이 지역을 비교,하지만 정확하게 모든 시간을 일치 수없는 것. 누구든지 이보다 더 정확한 방법을 알고 있습니까?
미리 감사드립니다. 1
편집은 의견을 주셔서 감사합니다. 는 ArcGIS와 MS SQL 서버 I에서
44.80016800 -106.40808100
44.80016800 -106.72123800
44.75016800 -106.72123800
44.75016800 -106.8
44.56699100 -106.8
: 여기
private Map<Integer, GeoPoint> vertices;
private Double getArea() {
List<Integer> xpoints = new ArrayList<Integer>();
List<Integer> ypoints = new ArrayList<Integer>();
CoordinateConversion cc = new CoordinateConversion();
for(Entry<Integer, GeoPoint> itm : vertices.entrySet()) {
GeoPoint pnt = itm.getValue();
String temp = cc.latLon2MGRUTM(pnt.getLatitudeE6()/1E6, pnt.getLongitudeE6()/1E6);
// Example return from CC: 02CNR0634657742
String easting = temp.substring(5, 10);
String northing = temp.substring(10, 15);
xpoints.add(Integer.parseInt(easting));
ypoints.add(Integer.parseInt(northing));
}
int[] x = toIntArray(xpoints);
int[] y = toIntArray(ypoints);
return polygonArea(x,y);
}
포인트의 예를 들어 목록은 다음과 같습니다 여기 (CoordinateConversion 코드는 IBM의 링크를 위한다) 영역을 점점 내 코드입니다 90847.0 에이커를 얻으십시오. 위 코드를 사용하면 90817.4 에이커가됩니다. 포인트의 또 다른 예를 들어 목록 :
는 ArcGIS와 MS SQL 서버에서45.78412600 -108.51506700
45.78402600 -108.67972100
45.75512200 -108.67949400
45.75512200 -108.69962300
45.69795400 -108.69929400
나는 15732.9 에이커를 얻을. 위의 코드를 사용하면 15731.9 에이커가됩니다.
세계의 고도가 변동함에 따라 다각형의 면적이 변경됩니까? 캔자스와 같은 장소는 스위스와 같은 곳보다 헥타르에있는 "면적"이 적습니다. – sarnold
나는 그것에 영향을 미칠 것이라고 생각 하겠지만, 시도하지 않은 것입니다. 제가 시도한 가장 큰 고도 차이는 300 미터에서 1200 미터 사이 였고 두 고도에서 정확한 정확도를 얻지 못했습니다. 그것은 내가이 운율이나 이유를 찾을 수 있는지 알 수있는 수천 개의 다각형들을 가지고 있기 때문에 좋은 지적을 불러 일으킨다. – Behr
다음 양식의 예를 업로드 할 수 있습니까? 1. 좌표 집합 (또는 몇 개). 2. 영역을 계산하기 위해 실행하는 모든 코드. 3. 코드를 실행할 때 얻을 수있는 영역 4. SQL Server 및 ArcGIS에서 가져온 영역. 나는 그것들 중 하나에 접근 할 수는 없지만 이것을 시도하고 싶다. –