| | |
| | | import org.gdal.gdal.gdal; |
| | | import org.gdal.gdalconst.gdalconst; |
| | | import org.gdal.ogr.*; |
| | | import org.gdal.osr.CoordinateTransformation; |
| | | import org.gdal.osr.SpatialReference; |
| | | import org.gdal.osr.osr; |
| | | |
| | |
| | | } catch (Exception ex) { |
| | | log.error(ex.getMessage(), ex); |
| | | } |
| | | } |
| | | |
| | | public static SpatialReference createSpatialReference(int epsg) { |
| | | SpatialReference sr = new SpatialReference(); |
| | | sr.ImportFromEPSG(epsg); |
| | | sr.SetAxisMappingStrategy(osr.OAMS_TRADITIONAL_GIS_ORDER); |
| | | |
| | | return sr; |
| | | } |
| | | |
| | | /** |
| | |
| | | //{ |
| | | point.TransformTo(SR4326); |
| | | //} |
| | | point.SwapXY(); |
| | | //point.SwapXY(); |
| | | |
| | | return point; |
| | | } |
| | | |
| | | /** |
| | | * 转换为WGS84坐标 |
| | | */ |
| | | public static Geometry toWgs84(SpatialReference sr, double x, double y) { |
| | | Geometry point = new Geometry(ogr.wkbPoint); |
| | | point.AssignSpatialReference(sr); |
| | | point.AddPoint(x, y); |
| | | |
| | | point.TransformTo(GdalHelper.SR4326); |
| | | //point.SwapXY(); |
| | | |
| | | return point; |
| | | } |
| | | |
| | | /** |
| | | * WGS84转换为目标坐标 |
| | | */ |
| | | public static double[] fromWgs84(SpatialReference sr, double x, double y) { |
| | | // https://blog.csdn.net/weixin_34910922/article/details/129208661 |
| | | CoordinateTransformation ct = new CoordinateTransformation(GdalHelper.SR4326, sr); |
| | | if (sr.IsProjected() != 1) { |
| | | sr.SetAxisMappingStrategy(osr.OAMS_TRADITIONAL_GIS_ORDER); |
| | | } |
| | | |
| | | return ct.TransformPoint(x, y); |
| | | } |
| | | |
| | | /** |
| | | * WGS84转换为目标坐标 |
| | | */ |
| | | public static int fromWgs84(SpatialReference sr, Geometry g) { |
| | | // https://blog.csdn.net/weixin_34910922/article/details/129208661 |
| | | CoordinateTransformation ct = new CoordinateTransformation(GdalHelper.SR4326, sr); |
| | | if (sr.IsProjected() != 1) { |
| | | sr.SetAxisMappingStrategy(osr.OAMS_TRADITIONAL_GIS_ORDER); |
| | | } |
| | | |
| | | return g.TransformTo(sr); |
| | | } |
| | | |
| | | public static Geometry createPolygon(SpatialReference sr, Double minx, Double miny, Double maxx, Double maxy) { |
| | | Geometry ring = new Geometry(ogr.wkbLinearRing); |
| | | ring.AddPoint_2D(minx, maxy); |
| | | ring.AddPoint_2D(maxx, maxy); |
| | | ring.AddPoint_2D(maxx, miny); |
| | | ring.AddPoint_2D(minx, miny); |
| | | ring.AddPoint_2D(minx, maxy); |
| | | |
| | | Geometry poly = new Geometry(ogr.wkbPolygon); |
| | | poly.AddGeometry(ring); |
| | | if (null != sr) { |
| | | poly.AssignSpatialReference(sr); |
| | | } |
| | | |
| | | return poly; |
| | | } |
| | | } |