如何将 X 和 Y 转换为纬度和经度

2024-01-21

我有一张桌子叫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 http://www.geopackage.org/spec120/#gpb_format

我想使用 java 解码这个 RANGE 字段。

我在这里尝试过 https://github.com/ngageoint/geopackage-core-java/blob/master/src/main/java/mil/nga/geopackage/geom/GeoPackageGeometryData.javafromBytes 方法

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 and y坐标和几何类型输入geometry对象,但是我怎样才能从中得到经纬度

在他们在 JS 中给出的示例之一中reff https://gis.stackexchange.com/questions/221882/formula-to-convert-xy-to-long-lat-coordinates-given-a-point.

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中进行相同的转换。 这是另一个例子

example https://stackoverflow.com/questions/47625549/generate-a-random-geopoint-from-a-fixed-distance-from-a-given-latitude-and-longi


请尝试以下方法获取数据:

Blob picture = resultSet.getBlob("RANGE");
inputStream = picture.getBinaryStream();
outputStream = new FileOutputStream("D:\\blob\\RANGE.jpg");
byte[] bufferBytes = new byte[1024];
int len = 0;
while ((len = inputStream.read(bufferBytes)) != -1) {
    outputStream.write(bufferBytes, 0, len);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 X 和 Y 转换为纬度和经度 的相关文章

随机推荐

  • Symfony2 和 Doctrine2:没有为实体“X”指定标识符/主键。每个实体必须有一个标识符/主键

    我正在使用 Symfony2 创建一些虚拟项目 我遵循 Symfony2 Book 文档来使用 Doctrine 命令行创建实体 http symfony com doc current book doctrine html add map
  • 与 apache Web 服务器和 tomcat 服务器的粘性会话

    我使用 apache Web 服务器作为 apache 后面的两个 tomcat 实例的负载平衡器 当第一个请求发送到节点 A 而来自同一客户端的第二个请求发送到节点 B 时 我无法访问节点 A 内的会话变量 这是显而易见的 我在互联网上冲
  • 如何创建适合移动和桌面浏览器的平面图?

    想要创建一个办公室的动态平面图 以显示占用情况并链接到会议等 我手头有一些 AutoCAD 文件 并且一直在研究在浏览器上制作此文件的方法 在我看来 SVG 将是一个很好的竞争者 它支持大多数移动和桌面浏览器 请不要使用旧版本的 IE 但我
  • Rust 似乎在内存中为布尔数组分配与 8 位整数数组相同的空间

    Running fn main println std mem size of lt u8 1024 gt println std mem size of lt bool 1024 gt 1024 1024 这不是我所期望的 所以我编译并在
  • 找不到 Alamofire 框架

    我正在尝试将 alamofire 安装到我的项目中 以便我可以将图像上传到我的服务器 但是我似乎找不到alamofire framework文件 我已经下载了两次 git 完成了安装说明https github com Alamofire
  • SQL NOT IN 子句

    我有一个查询未按预期工作 Q1 SELECT id name FROM vw x WHERE id NOT IN select pid from table x GROUP BY id name Having max c date gt G
  • SQL Server:存储过程的 EXECUTE AS 子句未授予 sysadmin 权限

    我开发了一个存储过程 以便从备份文件恢复数据库并向其中添加应用程序用户 该存储过程属于master 数据库 问题是我的 IT 部门不允许我使用管理员用户 只能使用 sysadmin 用户的 EXECUTE AS 语句 我可以恢复数据库 但找
  • 为什么要设置线程的Terminal属性?

    我有多线程应用程序 procedure TGridUpdater Execute begin inherited CodeSite Send Thread executed sp ConnectionFactory GetConnectio
  • 这是使用和测试利用工厂模式的类的正确方法吗?

    我对工厂模式没有太多经验 我遇到过一种情况 我认为这是必要的 但我不确定我是否正确实现了该模式 并且我担心它的影响对我的单元测试的可读性有影响 我创建了一个代码片段 它 根据记忆 近似于我正在工作的场景的本质 如果有人能看一下它并看看我所做
  • 如何隐藏/加密谷歌和其他浏览器中网络选项卡的ajax请求? [复制]

    这个问题在这里已经有答案了 我正在 jwplayer 上工作 我只想隐藏 加密 jwplayer 发送的用于播放视频的 ajax 请求 原因是 当 jwplayer 发送请求时 它包含视频 ID 我不想透露它 因为它是从 google 驱动
  • 使用预填充的核心数据部署应用程序

    我正在尝试将我的应用程序与Core Data已经有人居住 我找到了一些链接 其中解释了如何执行此操作 但要么不起作用 要么答案非常旧 我跟着发帖但不起作用 解决方案可能是导入 sqlite文件到应用程序文件夹 然后将它们复制到设备的文件系统
  • 创建 C# 安装程序的最佳方法

    我使用 Visual C 2008 Express 版 我希望能够为我拥有的项目创建一个安装程序 我可以使用发布工具来完成此操作 但您几乎无法控制 有没有免费的方法可以做到这一点 或者我需要使用 VS2008 的完整版本 或者 我发布时是否
  • 将变量从 [HttpPost] 方法传递到 [HttpGet] 方法

    我将视图从 HttpPost 方法重定向到 HttpGet 方法 我已经让它工作了 但想知道这是否是最好的方法 这是我的代码 HttpPost public ActionResult SubmitStudent StudentViewMod
  • 将灰度滤镜应用于 div

    尝试对主背景上方的 div 应用灰度滤镜 想知道这是否可以通过 jQuery CSS3 或 HTML5 实现 我正在尝试一些新的 CSS3 HTML5 技术 但没有成功 我无法将其保存为两个图像 因为背景需要拉伸全尺寸 因此它在每个屏幕上不
  • itgenobr001:找不到客户端。与 Exact Online 比利时合作的数据接入点

    我们刚刚入住https ecotaksen be https ecotaksen be Exact 上的查询和更新运行良好 但安装生产许可证后出现错误itgenobr001 Client not found occurs 我的数据容器规范是
  • 填充下拉列表客户端。收到回发验证错误

    我有一个带有两个下拉列表的网络控件 当您从第一个下拉列表中选择某些内容时 第二个下拉列表就会相应地填充 当回发发生时 我得到旧的 回发或回调参数无效 事件验证已启用 使用于 配置或 在 页 出于安全目的 这 功能验证参数 回发或回调事件发起
  • JQuery 事件不适用于生产中的 heroku,但适用于开发中

    这似乎是一个常见问题 但我还没有找到适用于我的情况的解决方案 我在 bikes js coffee 中有一些 JQuery 在本地开发中可以正常工作 当我推送到 Heroku 时 bikes js coffee 中的脚本不会运行 浏览器的
  • Boost::几何联合简化 - 它是如何工作的?

    Boost 中有很棒的几何库 它还允许绘制 SVG 图像 我想在我的一些项目中使用它 但它对我来说真的很奇怪 见下图 所以我们有 3 个像素点 在 2d 空间中表示为正方形 1 1 0 1 pic 1 我们想从它们那里得到一个并集并简化它
  • 无法使用 Selenium 的 chrome 驱动程序

    我在使用 Selenium 的 Chrome 驱动程序时遇到问题 我已下载 chromedriver 并将其保存到 C Chrome driver webdriver Chrome executable path C Chrome 使用它会
  • 如何将 X 和 Y 转换为纬度和经度

    我有一张桌子叫IK TEMP它包含名为 data range 的列 String sql SELECT DATA RANGE FROM IK TEMP try Connection conn this connect Statement s