资讯详情

GeoTool常见问题

本页汇集了每个模块的每个模块页面。即使你不确定哪个模块负责,它也允许你搜索答案。

请向本页发送任何意见或建议GeoTools 用户列表。

常见的地理工具问题

问:GeoTools 库有哪些功能?

这是一个很难回答的问题,因为 GeoTools 是一个通用的地理空间库。

以下是当今库中一些重要功能的例子:

地理工具版本

问:什么是 SNAPSHOT 版本,我该如何使用它?

快照是开发人员正在积极处理的 GeoTools 代码。

通常会有三个活动快照:

  • 一个与稳定分支相关的(例如 GeoTools 23-SNAPSHOT);

  • 与维护分支相关的第二个(例如 22-SNAPSHOT);

  • 第三个用于主分支(例如 24-SNAPSHOT)。

有时也会有应用了错误修复的早期分支的快照版本(例如 GeoTools 19-SNAPSHOT)。

每晚构建新的快照 jar 并将其部署到与用于正式发布的存储库分开的存储库中。如果您使用 Maven 作为构建工具,则可以通过将以下内容添加到您的pom.xml:

 osgeo-snapshot OSGeo Snapshot Repository https://repo.osgeo.org/repository/snapshot/ true false  

您现在可以通过将项目设置为您的版本属性来针对快照版本构建您的项目,如下所示:

 24-SNAPSHOT  

在您的应用程序中主动测试修复时,这是一种很好的方法。

常见的许可证问题

问:GeoTools 使用什么许可证?

所有 GeoTools 模块均在 GNU 宽松通用公共许可证 (LGPL) 下发布。GeoTools 可用于商业应用,对 GeoTools 所做的任何更改都需要提供给您的客户。

一个简单的方法是将更改贡献回 GeoTools 项目(但这不是必需的)。

问:我可以在我的商业项目中使用 GeoTools 吗?

是的。这是我们选择 LGPL 许可证的原因之一。您可以构建一个使用 GeoTools 作为库的商业应用程序,并在您选择的任何许可下重新分发您的应用程序。您的用户将根据您的许可条款获得您的应用程序的许可,并根据 LGPL 的条款获得 GeoTools 库的许可。您只需要为您的用户提供某种方式来获取 GeoTools 库的源代码,最简单的方法是将您的用户指向 GeoTools 项目的服务器。

但是,如果您选择修改 GeoTools 库本身,那么您必须将这些更改的源代码发布给您的应用程序用户。

最简单的方法是将这些更改提交回 GeoTools 项目,以便将更改合并到核心源代码中。

问:我可以在我的 GPL 项目中使用 GeoTools 吗?

是的。这是我们选择 LGPL 许可证的原因之一。您可以构建一个使用 GeoTools 作为库的免费软件应用程序,并在 GPL 许可下重新分发您的应用程序。您的用户将根据 GPL 的条款获得您的应用程序的许可,并根据 LGPL 的条款获得 GeoTools 库的许可。您只需要为您的用户提供某种方式来获取 GeoTools 库的源代码,或者通过将您的用户指向 GeoTools 项目的服务器,或者通过向他们提供 GeoTools 代码的方式向他们提供您的 GPL 代码应用。

但是,如果您选择修改 GeoTools 库本身,那么您必须将这些更改的源代码发布给您的用户。

最简单的方法是将这些更改提交回 GeoTools 项目,以便将更改合并到核心源代码中。

您还可以将 GeoTools 代码直接合并到您的 GPL 应用程序中。从法律上讲,后者相当于根据 GPL 重新许可​​ GeoTools,这是 LGPL 明确允许的。这种重新许可是单向的,需要特定的操作 - 请参阅 LGPL。

问:我使用 GeoTools 有哪些限制?

没有任何。您可以使用 GeoTools 代码阅读、运行、复制或执行任何您想做的事情。这是我们根据 LGPL 授予您的自由软件的四项核心自由之一:为您选择的任何目的使用软件的自由。

LGPL 的唯一限制是当您重新分发 GeoTools 时,即当您将它单独或作为更大产品的一部分传递给其他人时,例如当您共享或出售它时。

问:我重新分发 GeoTools 有哪些限制?

从技术上讲,您必须向从您那里收到 GeoTools 副本的每个人提供某种方式来获取库的源代码。实际上,将这些用户指向 GeoTools 项目本身被认为是一个合适的解决方案。

但是,如果您要重新分发 GeoTools 的修改版本,则需要向用户提供对修改后代码的访问权限。这意味着您必须为您的用户提供某种方式来获取修改后的代码,例如自己发布代码。为您的用户提供修改的另一种方法是与我们合作,将您的更改集成到 GeoTools 库中——然后您可以直接使用新库。最好的方法是在我们的问题跟踪器上打开一个更改请求,并向该请求添加一个包含您的更改的代码补丁。

JTS 常见问题

问:JTS 和 GeoTools 是什么关系?

我们使用 Java Topology Suite 来表示“简单”几何,并使用 OpenGIS 接口来表示其他所有内容。在某些情况下,我们被迫定义自己的 API 模块,例如数据访问,其中“标准”不可用。

您将经常使用 JTS,因为它实际上就是 GeoTools 的“形状”。它使用像Coordinate Point PolygonLineString

  • 请记住,JTS 是纯拓扑结构,而 Geometry 对象是没有意义的纯形状。对于含义,将该形状放置在地球上,您需要咨询CoordinateReferenceSystem.

  • JTS 拓扑操作在二维笛卡尔平面中工作。考虑到这一点,可以表示三维形状,但不能用它来计算。

  • JTS 专注于线性拓扑,您需要将曲线表示为LineString 具有许多小段的曲线。

有了这些笔记,JTS 听起来可能是有限的;相反,它专注于手头的任务——地理信息系统。虽然 3D 和曲线在 CAD 系统中可能很常见,但我们需要大量资金和原始科学才能使其适用于 GIS。其中一些工作是在带有 ISO 几何的 GeoTools 中进行的。

问:什么几何规格?

JTS 是 OGC Simple Features for SQL Specification(即 SFSQL)的实现。它涵盖了 2D 结构,如点、线和多边形。JTS 愿意携带第三点,但不将其用于计算 - 使其成为笛卡尔空间的 2.5D 解决方案。

规格

支持

执行

SQL 的简单功能

2.5D,线性

Java 拓扑套件

ISO几何

3D,曲线

OpenGIS ISO 几何接口

GeoTools 强调使用这两种实现,但坦率地说,ISO Geometry 实现还没有准备好。

参考常见问题

问:如何选择EPSG授权机构?

引用模块开箱即用的功能并不多 - 它需要有人

告诉它所有有趣的代码是什么意思(例如“EPSG:4326”)。

您需要在类路径中选择一个 EPSG jar;如果您的类路径上有多个 EPSG jar,您将获得一个FactoryException.

对于大多数需求,只需使用gt-epsg-hsql插件:

  • gt-epsg-hsql: 将包含官方 EPSG 数据库的 HSQL 数据库解压到临时目录中,这是桌面应用程序的绝佳解决方案。

有几种选择:

  • gt-epsg-wkt: 使用内部属性文件并且是轻量级的而不是官方和正确的。一个很好的小程序解决方案

  • gt-epsg-postgres: 使用官方的 EPSG 数据库,你必须自己加载到 PostgreSQL 中。Java EE 应用程序的绝佳解决方案。

  • gt-epsg-access: 直接使用官方的EPSG 数据库作为分布式。对于需要最新官方数据库的 Windows 用户来说,这是一个很好的解决方案。

Q: gt-reference 需要什么 Jars?

作为使用示例,gt-epsg-hsql您将需要:

C:\geotools\trunk\modules\plugin\epsg-hsql>mvn dependency:tree ... ------------------------------------------------------------------------ Building EPSG Authority Service using HSQL database task-segment: [dependency:tree] ------------------------------------------------------------------------ [dependency:tree] org.geotools:gt2-epsg-hsql:jar:2.5-SNAPSHOT +- junit:junit:jar:3.8.1:test +- javax.media:jai_core:jar:1.1.3:provided +- org.geotools:gt2-referencing:jar:2.5-SNAPSHOT:compile | +- java3d:vecmath:jar:1.3.1:compile | +- commons-pool:commons-pool:jar:1.3:compile | \- org.geotools:gt2-metadata:jar:2.5-SNAPSHOT:compile | +- org.opengis:geoapi:jar:2.2-SNAPSHOT:compile | +- javax.units:jsr108:jar:0.01:compile | \- edu.oswego:concurrent:jar:1.3.4:compile +- org.geotools:gt2-sample-data:jar:2.5-SNAPSHOT:test +- hsqldb:hsqldb:jar:1.8.0.7:compile +- net.sourceforge.groboutils:groboutils-core:jar:5:test \- commons-dbcp:commons-dbcp:jar:1.2.2:test ------------------------------------------------------------------------ 

问:需要 Bursa-Wolf 参数吗?

GeoTools 此时使用 Bursa-Wolf 参数执行基准面偏移。如果无法从您的数据中确定这些,CoordinateReferenceSystem我们将无法进行转换。

大多数情况下,这并不重要,因为用户在收集信息的同一数据中处理他们的信息。

  • 答:宽容

    快速修复包括在搜索MathTransform.时将“lenient”设置为 true :

    MathTransform transform = CRS.findMathTransform(sourceCRS, targetCRS, true); 

    这种方法对于显示来说已经足够好了,但不推荐用于编辑或仔细分析工作。

  • 答:匹配您的 PRJ 文件

    通常,当您CoordinateReferenceSystemprjshapefile 中包含的 文件加载 a 时,会发生这种情况。

    修复使用 CRS 实用程序类在 EPSG 数据库中查找完整定义。EPSG 数据库包含的信息多于您的prj文件中无法表达的信息。

  • A: Grid 基准面偏移

    最后,在极少数情况下,由网格支持的基准偏移仅部分实现。Reuben Schulz 为 NADCON 实施了由网格支持的数据转移,但存在以下限制:

    • 尚未集成 NADCON 网格的使用 DefaultCoordinateOperationFactory(因此您需要手动设置)

    • 不包括网格提供的基准偏移的一般情况,例如西班牙基准更改 ED50-ETRS89 将不起作用

问:gt-reference 有什么作用?

您最终会关心这一点,因为它定义了 2D 数据实际上意味着 3D 数据的方式。

您可以进行测量(即坐标)加上坐标参考系统(含义),然后确定地球上的某个位置在 3D 空间中的位置。

很容易假设坐标在 double[] 中记录为重复的 x/y 值,这在 CAD 程序中经常进行。

标签: swt131变送器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台