标签: geotools

如何在Java中对某些形状进行三角测量/镶嵌?

我想从GeoTools镶嵌国家形状,在地球表面上以3D形式显示.GeoTools使用内部功能丰富的JTS拓扑套件.

是否包含镶嵌某些形状的实用程序?我看到有三角测量包,但无法弄清楚,如何将其用于带孔的形状.

另外,我不仅可以像这里一样连接现有的顶点

在此输入图像描述

它应该填充内部有多个顶点的形状.

UPDATE

我发现,JTS包含ConformingDelaunayTriangulationBuilder允许以某种方式制作希望镶嵌的类,但它的工作很糟糕.首先,它只允许约束,这意味着需要额外的代码来从凹陷区域中删除三角形.并且它还试图保留细分的Delaunay性质,这导致创建许多其他部分.

最后,它导致ConstraintEnforcementException复杂的形状像国家和无法使用.

我还发现了"三角形"包,用C语言编写并实现了Chew的第二种算法,效果很好

在此输入图像描述

现在我想知道,它是移植到Java还是包含它?

java jts mesh geotools tessellation

6
推荐指数
1
解决办法
1636
查看次数

Hadoop和Geoserver

我打算开发一个基于Hadoop / HBase for Geotools的新数据存储,以便在Geoserver中使用它,以可视化Raster数据(平铺卫星图像)。有没有人做过类似的事情,甚至不知道这是否可能?我已经知道如何编译和集成像CSV这样的开源数据存储,但是我不知道如何开始在Hadoop上实现此数据存储。

谢谢。

hadoop hbase datastore geoserver geotools

5
推荐指数
1
解决办法
1266
查看次数

Maven 缺少工件 org.geotools:gt-shapefile:jar:11-SNAPSHOT

您好,我正在尝试使用 maven 编写一个简单的 geotools 项目。其实我对maven很陌生。我打开了新的 maven 项目,设置了设置并编写了一些代码。据我所知,maven 应该下载并安装 geotools 所需的 jar 文件。但是 A 收到“缺少工件 org.geotools:gt-shapefile:jar:11-SNAPSHOT”错误,我不明白为什么会这样。

我的工作环境:

Eclipse Kepler、Jdk 6、Maven-最新版本、Geotools-最新版本

这是我的 pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.geotools</groupId>
<artifactId>tutorial</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>tutorial</name>
<url>http://maven.apache.org</url>
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <geotools.version>11-SNAPSHOT</geotools.version>
</properties>
<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>3.8.1</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-shapefile</artifactId>
        <version>${geotools.version}</version>
    </dependency>
    <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-swing</artifactId>
        <version>${geotools.version}</version>
    </dependency>
</dependencies>
<repositories>
    <repository>
        <id>maven2-repository.dev.java.net</id>
        <name>Java.net repository</name>
        <url>http://download.java.net/maven/2</url>
    </repository>
    <repository>
        <id>osgeo</id>
        <name>Open Source Geospatial Foundation Repository</name>
        <url>http://download.osgeo.org/webdav/geotools/</url>
    </repository>
</repositories>
Run Code Online (Sandbox Code Playgroud)

这是我的快速入门课程

    package org.geotools.tutorial;

import java.io.File;

import org.geotools.data.FileDataStore;
import …
Run Code Online (Sandbox Code Playgroud)

java eclipse maven geotools

5
推荐指数
2
解决办法
1万
查看次数

Java快速查找一个点是否落在一个国家(多边形)的方法

我希望有人能指出我正确的方向。

我们有数百万条记录流过/流过,我们需要快速查找以确定它们属于哪个国家/地区多边形。

有人可以推荐一种完整的基于 JAVA 的方法来做到这一点。据我所知,我会使用 JTS 和/或 geotools 吗?我的想法是采用所有国家多边形,并可能像使用鱼网或网格一样将它们分开,使它们更小以获得更好的性能。然后,我会将这些加载到基于 Java 的内存空间索引中……当记录流过时,我会查找 Java 空间索引以查看它们属于哪个国家/地区。(也许就像一个空间特征集合)。

对于大量数据,这种方法听起来合理吗?从Java的角度来看,我将如何实现这一点?这只是使用 JTS 和/或 Geotools 吗?我会创建什么类型的索引。(加载后多边形数据将是静态的,因为它只包含国家边界)

从阅读 geotools 文档很难破译空间索引以及它的性能如何以及是否应该使用它?

任何帮助或指导将不胜感激。

谢谢

java geometry jts geotools

5
推荐指数
1
解决办法
2474
查看次数

使用 geotools java 实现 wfs-t 服务器

我需要从客户端(OpenLayers)读取 WFS 事务并执行适当的操作。我想使用geoTools!有没有办法实现 wfs 服务器?

假设我有一个这样的交易:

<wfs:Transaction service=”WFS” version=”1.0.0?
 xmlns:myns=”http://www.domain.com/ns“
 xmlns:ogc=”http://www.opengis.net/ogc”
 xmlns:wfs=”http://www.opengis.net/wfs”>
  <wfs:Update typeName=”myns:LayerToUpdate“>
   <wfs:Property>
       <wfs:Name>propertyToUpdate</wfs:Name>
       <wfs:Value>updatedValue</wfs:Value>
   </wfs:Property>
   <ogc:Filter>
       <ogc:PropertyIsEqualTo>
           <ogc:PropertyName>constraintProperty</ogc:PropertyName>
           <ogc:Literal>constraintValue</ogc:Literal>
       </ogc:PropertyIsEqualTo>
   </ogc:Filter>
 </wfs:Update>
</wfs:Transaction>
Run Code Online (Sandbox Code Playgroud)

如果您建议另一种方法来做到这一点,我们将不胜感激!

java geotools server

5
推荐指数
1
解决办法
814
查看次数

Geotools 距离计算失败,几个经纬度点没有收敛异常

我有很多点导致 getOrthodromicDistance 方法在 geotools lib 中失败并出现异常,而这些点是有效的经纬度点:

\n\n

抛出异常的点(纬度,经度):

\n\n
val p1= (5.318765,-75.786109)\nval p2= (-6.32907,106.09254)\n
Run Code Online (Sandbox Code Playgroud)\n\n

例如例外:\n 点 75\xc2\xb047,2'W 06\xc2\xb019,7'S 和 106\xc2\xb005,6'E 05\xc2\xb019,1'N 没有收敛。\njava.lang。 ArithmeticException: org.geotools.referencing 上的点 75\xc2\xb047,2'W 06\xc2\xb019,7'S 和 106\xc2\xb005,6'E 05\xc2\xb019,1'N.\n 没有收敛.GeodeticCalculator.computeDirection(GeodeticCalculator.java:1073)

\n\n

Scala 中使用的代码:

\n\n
  def latlonDistance(p1:(Double,Double), p2:(Double,Double)):Double={\n      val world= new GeodeticCalculator()\n      world.setStartingGeographicPoint(p1._2, p2._1)\n      world.setDestinationGeographicPoint(p2._2, p1._1)\n      world.getOrthodromicDistance\n   }\n
Run Code Online (Sandbox Code Playgroud)\n\n

注意:我在 latlonDistance 中传递的点格式是 (lat,lon) 如上所述,而 setStartingGeographicPoint、setDestinationGeographicPoint 需要 (lon,lat) \norder。

\n\n

使用的版本:

\n\n
        <dependency>\n          <groupId>org.geotools</groupId>\n          <artifactId>gt-referencing</artifactId>\n          <version>13.2</version>\n        </dependency>\n
Run Code Online (Sandbox Code Playgroud)\n\n

在 python 中按预期工作:

\n\n
>>> from geopy.distance import vincenty\n>>> pt1= [5.318765,-75.786109]\n>>> pt2= …
Run Code Online (Sandbox Code Playgroud)

exception geotools convergence

5
推荐指数
1
解决办法
377
查看次数

Geotools:wgs84 中缓冲区的边界框

我需要一个 Java 函数来在缓冲区周围生成一个边界框(矩形)。缓冲区由中心点(WGS84 坐标)和半径(以米为单位)定义。

在 JTS 中获取缓冲区的边界框似乎很简单:

Point center = ....
Geometry boundingBox = center.buffer(...).getEnvelope();
Run Code Online (Sandbox Code Playgroud)

然而,这是纯平面几何。有没有办法使用以米为单位给出距离的坐标参考系统来做到这一点?

最好使用 Geotools,但其他 Java 解决方案也可以使用...

java jts geospatial geotools

5
推荐指数
2
解决办法
2190
查看次数

AWS使用JAVA从s3对象创建新文件获取错误

我有一个形状文件,我需要从我的 java 代码中读取形状文件。我使用下面的代码来读取形状文件。

public class App {
    public static void main(String[] args) {
        File file = new File("C:\\Test\\sample.shp");
        Map<String, Object> map = new HashMap<>();//
        try {
            map.put("url", URLs.fileToUrl(file));
            DataStore dataStore = DataStoreFinder.getDataStore(map);
            String typeName = dataStore.getTypeNames()[0];
            SimpleFeatureSource source = dataStore.getFeatureSource(typeName);
            SimpleFeatureCollection collection = source.getFeatures();

            try (FeatureIterator<SimpleFeature> features = collection.features()) {
                while (features.hasNext()) {
                    SimpleFeature feature = features.next();
                    SimpleFeatureType schema = feature.getFeatureType();
                    Class<?> geomType = schema.getGeometryDescriptor().getType().getBinding();

                    String type = "";
                    if (Polygon.class.isAssignableFrom(geomType) || MultiPolygon.class.isAssignableFrom(geomType)) {

                        MultiPolygon geom = (MultiPolygon) feature.getDefaultGeometry();
                        type …
Run Code Online (Sandbox Code Playgroud)

java lambda amazon-s3 amazon-web-services geotools

5
推荐指数
1
解决办法
1800
查看次数

查找点是否在多边形内 - JAVA jts / awt / geotools

我有一个从 shapefile 中获取的多边形的随机坐标数。

-119.00072399999999 35.36158, -118.99903 35.361576, -118.999026 35.362579, -118.999023 35.363482, -118.999019 35.36432, -118.999408 35.364847999999995, -118.999406 35.365564, -118.999402 35.366516, -118.999398 35.367467999999995, -118.999394 35.368438, -118.999256 35.368438, -118.998232 35.368441
Run Code Online (Sandbox Code Playgroud)

我现在必须检查一个点(33.63705, -112.17563)是否在这个多边形内。

我担心的是,我的坐标不适合int数据类型。

这是我尝试过的:

import java.awt.Polygon;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang3.StringUtils;
import org.geotools.data.DataStore;
import org.geotools.data.DataStoreFinder;
import org.geotools.data.simple.SimpleFeatureCollection;
import org.geotools.data.simple.SimpleFeatureIterator;
import org.geotools.data.simple.SimpleFeatureSource;
import org.geotools.feature.DefaultFeatureCollection;
import org.geotools.feature.simple.SimpleFeatureBuilder;
import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
import org.geotools.geometry.jts.JTSFactoryFinder;
import org.geotools.referencing.crs.DefaultGeographicCRS;
import org.locationtech.jts.geom.Coordinate;
import org.locationtech.jts.geom.GeometryFactory;
import org.locationtech.jts.geom.Point;
import org.opengis.feature.simple.SimpleFeature;
import …
Run Code Online (Sandbox Code Playgroud)

java jts awt geotools

5
推荐指数
1
解决办法
2144
查看次数

Geotools lib 突然从存储库中消失

昨天当我尝试构建一个公共服务时,它产生了一个错误

253 引起:org.eclipse.aether.resolution.ArtifactResolutionException:无法解析以下工件:org.geotools:gt-main:jar:21.2, org.geotools:gt-epsg-wkt:jar:21.2, org. geotools:gt-epsg-hsql:jar:21.2: 在 spring-milestones ( https://repo.spring.io/milestone ) 中找不到工件 org.geotools:gt-main:jar:21.2

几个小时前,在问题发生之前,它是成功的。很长一段时间没有做出任何改变。

我们使用多个存储库,其中之一是http://download.osgeo.org/webdav/geotools。但现在似乎 URL 已关闭。不知道它何时以及为什么关闭 - 我在 osgeo.org 主页上找不到任何内容。

无论如何要收到有关此类问题的警告?我应该怎么做才能防止问题再次发生?

java spring maven geotools

5
推荐指数
1
解决办法
769
查看次数