postgis+geoserver实现路径规划遇到的问题及解决方法

ERROR: line_locate_point: 1st arg isn’t a line

可能原因:

  1. ST_Line_Locate_Point函数处的参数问题
    参考博客PostGIS 结合Openlayers以及Geoserver实现最短路径分析(二)使用openlayers+geosrever实现路线规划并没有出现结果,之后修改了部分代码终于解决了问题。
    修改的函数代码:
CREATE OR REPLACE FUNCTION "public"."pgr_shortestpath"("tbl" varchar, "startx" float8, "starty" float8, "endx" float8, "endy" float8)
  RETURNS "public"."geometry" AS $BODY$

declare
v_startLine geometry;--离起点最近的线
v_endLine geometry;--离终点最近的线
v_startTarget integer;--距离起点最近线的终点
v_startSource integer;
v_endSource integer;--距离终点最近线的起点
v_endTarget integer;
v_statpoint geometry;--在v_startLine上距离起点最近的点
v_endpoint geometry;--在v_endLine上距离终点最近的点
v_res geometry;--最短路径分析结果
v_res_a geometry;
v_res_b geometry;
v_res_c geometry;
v_res_d geometry;
v_perStart float;--v_statpoint在v_res上的百分比
v_perEnd float;--v_endpoint在v_res上的百分比
v_shPath_se geometry;--开始到结束
v_shPath_es geometry;--结束到开始
v_shPath geometry;--最终结果
tempnode float;
begin
--查询离起点最近的线
--4326坐标系
--找起点15米范围内的最近线
execute 'select geom, source, target from ' ||tbl
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
PostGIS是一个开源的地理信息系统(GIS)扩展,可以与关系型数据库(如PostgreSQL)结合使用。它提供了许多用于空间数据处理和分析的功能。 在Spring Boot中使用PostGIS进行路径规划,你可以按以下步骤进行操作: 1. 首先,在你的Spring Boot项目中添加对PostGIS的依赖。你可以在`pom.xml`文件中添加以下依赖项: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-spatial</artifactId> </dependency> ``` 2. 确保你的数据库已经安装并配置好了PostGIS扩展。你可以使用以下命令在你的数据库中创建PostGIS扩展: ```sql CREATE EXTENSION postgis; ``` 3. 创建一个实体类来表示你的空间数据。你可以使用`@Entity`注解和相应的字段注解来映射数据库表和字段,例如: ```java import com.vividsolutions.jts.geom.Point; @Entity public class Location { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; @Column(columnDefinition = "Geometry") private Point coordinates; // Getters and setters } ``` 4. 创建一个Spring Data JPA Repository接口来处理数据库操作。你可以继承`JpaRepository`接口,并且可以使用Spring Data JPA提供的查询方法,例如: ```java import org.springframework.data.jpa.repository.JpaRepository; public interface LocationRepository extends JpaRepository<Location, Long> { List<Location> findByCoordinatesWithin(Point point, Double distance); } ``` 5. 在你的业务逻辑中使用路径规划功能。你可以使用Spring注入`LocationRepository`来访问数据库,并使用该接口提供的方法进行路径规划操作,例如: ```java import org.springframework.beans.factory.annotation.Autowired; @Service public class RoutePlannerService { @Autowired private LocationRepository locationRepository; public List<Location> findLocationsWithin(Point point, Double distance) { return locationRepository.findByCoordinatesWithin(point, distance); } } ``` 这样,你就可以在你的Spring Boot应用程序中使用PostGIS进行路径规划了。根据你的具体需求,你可能需要进一步调整和扩展这些代码。希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值