GeometryEngine是Arcgis的重要工具類,利用此工具類,可以計算地圖上的距離、面積,將點、線、面轉化為Json數據,將Json轉化為點線面,坐標轉換作用非常強大。
一、坐標轉化
將用到方法 GeometryEngine.project(Geometry geometry, SpatialReference inputSR, SpatialReference outputSR),第二個為Geometry的坐標,第三個參數為要轉換的坐標。如果將84坐標轉換為墨卡托坐標代碼如下:
Point point1 = new Point(113,23); Point point2 =(Point)GeometryEngine.project(point1,SpatialReference.create(SpatialReference.WKID_WGS84), SpatialReference.create(SpatialReference.WKID_WGS84_WEB_MERCATOR));
二、GeometryEngine計算兩點的距離
用到 GeometryEngine.geodesicDistance(Geometry geometry1, Geometry geometry2, SpatialReference spatialReference, LinearUnit distanceUnit)方法。注意最好不要用GeometryEngine.distance方法,此方法是計算2D長度的,計算不准確。代碼如下:
Point point1 = new Point(113,23); Point point2 = new Point(113,24); double distance = GeometryEngine.geodesicDistance(point3,point4, SpatialReference.create(SpatialReference.WKID_WGS84), new LinearUnit(LinearUnit.Code.KILOMETER)); Log.i("TAG","distance ==="+distance );
此外, 通過GeometryEngine
.geodesicArea, GeometryEngine.geodesicLength
可分別計算處面積和周長,大家去探索去。我有不想再列舉了。