формула для преобразования координат X и Y в широту и долготу - PullRequest
0 голосов
/ 27 мая 2020

У меня есть таблица с именем IK_TEMP и она содержит столбцы с именем data, range.

        String sql = "SELECT DATA, RANGE FROM IK_TEMP";



        try (Connection conn = this.connect();

             Statement stmt  = conn.createStatement();

             ResultSet rs    = stmt.executeQuery(sql)){



            // loop through the result set

            while (rs.next()) {

                System.out.println(rs.getString("DATA") +  "\t" + 

                                   rs.getBytes("RANGE"));

               fromBytes(rs.getBytes("RANGE"));

            }

Поле RANGE (двоичное / BLOB) уже закодировано с использованием двоичного кода из arcGIS и сохранено в базе данных .

http://www.geopackage.org/spec120/#gpb_format

Я хочу декодировать это поле RANGE, используя java.

Здесь я пробовал с метод fromBytes

public void fromBytes(byte[] bytes) {

            this.bytes = bytes;



            ByteReader reader = new ByteReader(bytes);



            // Get 2 bytes as the magic number and validate

            String magic = null;

            try {

                magic = reader.readString(2);

            } catch (UnsupportedEncodingException e) {

                throw new GeoPackageException(

                        "Unexpected GeoPackage Geometry magic number character encoding: Expected: "

                                + GeoPackageConstants.GEOMETRY_MAGIC_NUMBER);

            }

            if (!magic

                    .equals(GeoPackageConstants.GEOMETRY_MAGIC_NUMBER)) {

                throw new GeoPackageException(

                        "Unexpected GeoPackage Geometry magic number: "

                                + magic

                                + ", Expected: "

                                + GeoPackageConstants.GEOMETRY_MAGIC_NUMBER);

            }



            // Get a byte as the version and validate, value of 0 = version 1

            byte version = reader.readByte();

            if (version != GeoPackageConstants.GEOMETRY_VERSION_1) {

                throw new GeoPackageException(

                        "Unexpected GeoPackage Geometry version: "

                                + version

                                + ", Expected: "

                                + GeoPackageConstants.GEOMETRY_VERSION_1);

            }



            // Get a flags byte and then read the flag values

            byte flags = reader.readByte();

            int envelopeIndicator = readFlags(flags);

            reader.setByteOrder(byteOrder);



            // Read the 5th - 8th bytes as the srs id

            srsId = reader.readInt();



            // Read the envelope

            envelope = readEnvelope(envelopeIndicator, reader);



            // Save off where the WKB bytes start

            wkbGeometryIndex = reader.getNextByte();



            // Read the Well-Known Binary Geometry if not marked as empty

            if (!empty) {

                geometry = GeometryReader.readGeometry(reader);

            }



        }

Я получаю координаты x и y и geometryType в объекте geometry, но как я могу получить широту и долготу из этого

в одном из пример, который они привели в JS reff .

for item in (GeometryDataXYValue)!{

        let xValue = item.paths?.ofX

        let yValue = item.paths?.ofY



        //recieve x y point

        currentPoint = AGSPoint(x: xValue!, y: yValue!, spatialReference: AGSSpatialReference.webMercator()) 



        //convert to lat long by AGSSpatialReference.wgs84()



       if  let aReference = AGSGeometryEngine.projectGeometry(currentPoint!, to: AGSSpatialReference.wgs84()) as? AGSPoint {

            currentPoint = aReference

        }

    }

    var long:Double = currentPoint!.x

    var lat: Double = currentPoint!.y

    print("value long lat =  \(long , lat)")

}

Но я хочу такое же преобразование в java.

Это еще один пример

пример

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...