Java 动态更新输入到Geoserver

Java 动态更新输入到Geoserver,java,postgis,shapefile,geoserver,Java,Postgis,Shapefile,Geoserver,我希望有人能在这一点上帮助我,因为我一直试图找到解决办法很长时间没有成功 我有一个多边形文件,我正在使用geoserver在浏览器上显示该文件。我已经根据形状文件中一个属性(比如“计数”)的值对多边形进行了颜色编码(通过创建一个SLD文件) 我的问题是我想定期(每天)更新“count”属性(这是一个整数),因此我想在geoserver中反映这一变化。我通过一个已经启动并运行的java服务获取“count”属性的值。但到目前为止,我还没有找到一种方法,可以通过java更新形状文件中的单个属性(针对

我希望有人能在这一点上帮助我,因为我一直试图找到解决办法很长时间没有成功

我有一个多边形文件,我正在使用geoserver在浏览器上显示该文件。我已经根据形状文件中一个属性(比如“计数”)的值对多边形进行了颜色编码(通过创建一个SLD文件)

我的问题是我想定期(每天)更新“count”属性(这是一个整数),因此我想在geoserver中反映这一变化。我通过一个已经启动并运行的java服务获取“count”属性的值。但到目前为止,我还没有找到一种方法,可以通过java更新形状文件中的单个属性(针对所有特性)。geoTools库帮助我读取形状文件,但我无法找到使用该库修改属性的方法

我该怎么做?请帮我回答以下问题:

  • geoserver是我的用例的正确选择吗
  • 是否有某种方法可以使用java更新形状文件的属性
  • 我应该继续使用形状文件还是移动到POSTGIS
  • 我们可以使用java更新POSTGIS中要素的属性吗
  • 如果您只需要显示一个图层,而该图层不是很大(shapefile的大小是多少?),我会将文件转换为并直接在浏览器中显示
  • 当基础数据不变时,Geoserver通常与ShapeFile一起使用。如果不是,则通常使用postgis

  • 当然。但geoserver也可以使用。只需启用它并使用POST请求或更新数据
  • 我认为最好的选择是为您支持的流程创建一个新用户,并添加一个只允许该用户使用wfs.Transaction的安全规则。您可以在支持的进程中使用基本http身份验证来启动更新shapefile的POST http请求

  • 视情况而定。如果是一个shapefile,并且它不会更改日志(每天一次),我可能会按以下顺序使用:
  • geojson直接显示在浏览器中(不带geoserver)->shapefile+geoserver->postgis+geoserver

  • 当然。postgis图层只是一个具有geometry类型列的postgresql表。您可以像更新postgresql中的任何其他表一样更新表
  • 我现在无法提供使用geotools更新shapefile的完整示例,但请检查此项

    • 打开shapefile,如第二个链接的access部分所示
    • 打开第一个链接中显示的事务
    • 使用要素实例的setAttribute方法
    • 结束交易
  • 如果您只需要显示一个图层,而该图层不是很大(shapefile的大小是多少?),我会将文件转换为并直接在浏览器中显示
  • 当基础数据不变时,Geoserver通常与ShapeFile一起使用。如果不是,则通常使用postgis

  • 当然。但geoserver也可以使用。只需启用它并使用POST请求或更新数据
  • 我认为最好的选择是为您支持的流程创建一个新用户,并添加一个只允许该用户使用wfs.Transaction的安全规则。您可以在支持的进程中使用基本http身份验证来启动更新shapefile的POST http请求

  • 视情况而定。如果是一个shapefile,并且它不会更改日志(每天一次),我可能会按以下顺序使用:
  • geojson直接显示在浏览器中(不带geoserver)->shapefile+geoserver->postgis+geoserver

  • 当然。postgis图层只是一个具有geometry类型列的postgresql表。您可以像更新postgresql中的任何其他表一样更新表
  • 我现在无法提供使用geotools更新shapefile的完整示例,但请检查此项

    • 打开shapefile,如第二个链接的access部分所示
    • 打开第一个链接中显示的事务
    • 使用要素实例的setAttribute方法
    • 结束交易
      • 有几件事:

      • 我不会使用shapefile来实现这一点,而是使用像postgis这样的真正的DBMS。Shapefile适用于服务只读数据集,而不是并发更改。记住这一点,如果我们谈论的是一个流量低、更新不频繁的站点(是的,一天一次是不频繁的),shapefile应该是可以的
      • 也可以使用GeoTools修改shapefile。也许会有帮助。可以在Postgis中执行类似操作来更新列,也可以直接执行
      • 您可以使用WFS-T对Shapefile和Postgis进行更新。请注意,默认情况下,WFS-T在GeoServer中启用,并且对所有人开放,您可能希望对此进行更改(即至少对写入操作启用身份验证)
      • 希望这有帮助, 西蒙妮。

        有几件事:

      • 我不会使用shapefile来实现这一点,而是使用像postgis这样的真正的DBMS。Shapefile适用于服务只读数据集,而不是并发更改。记住这一点,如果我们谈论的是一个流量低、更新不频繁的站点(是的,一天一次是不频繁的),shapefile应该是可以的
      • 也可以使用GeoTools修改shapefile。也许会有帮助。可以在Postgis中执行类似操作来更新列,也可以直接执行
      • 您可以使用WFS-T对Shapefile和Postgis进行更新。请注意,默认情况下,WFS-T在GeoServer中启用,并且对所有人开放,您可能希望对此进行更改(即至少对写入操作启用身份验证)
      • 希望这有帮助,
        Simone。

        使用WFS-T,用户可以更改数据。但是,作为一名管理员,我想从后端通过编程来完成这项工作。在我运行的java服务中合并WFS-T是否可行。关于geotools,它确实允许我创建一个新的shapefile,但我找不到一个它可以帮助我修改的例子