PostGis+GeoServer+OpenLayers最短路径分析

使用PostGis存储路线数据,在GeoServer中发布路网图层和最短路径图层,通过OpenLayers建立路网和展示图层。

1、PostGis:PostgreSQL 12.4,
2、GeoServer:geoserver-2.17.2
3、OpenLayers:6.4.3

一、做成路网数据

1、在PostGis建立路网数据表,主键使用sequence,路网geom 使用geometry(LineString,4326)

CREATE SEQUENCE public.my_roads_id_seq
    INCREMENT 1
    START 1
    MINVALUE 1
    MAXVALUE 2147483647
    CACHE 1;
    
ALTER SEQUENCE public.my_roads_id_seq OWNER TO postgres;

CREATE TABLE public.my_roads
(
    id integer NOT NULL DEFAULT nextval('my_roads_id_seq'::regclass),
    name character varying(32) COLLATE pg_catalog."default",
    geom geometry(LineString,4326),
    CONSTRAINT my_roads_pkey PRIMARY KEY (id)
)TABLESPACE pg_default;

ALTER TABLE public.my_roads OWNER to postgres;

2、在GeoServer中发布路网图层

建立工作区,建立postgis的数据存储,发布my_roads图层。
在这里插入图片描述
EPSG使用4326,边框及经纬度为:【-180,-90 】【180,90】即可。
在这里插入图片描述

3、OpenLayers中建立路网

使用vue开发路网编辑画面。
在这里插入图片描述
实现方式,请参考:OpenLayers 在Vue中增删改

注意点:新增的线不再是newFeature.setGeometry(new MultiLineString([geometry.getCoordinates()]))

// 转换坐标
 let geometry = this.drewFeature.getGeometry().clone();
 geometry.applyTransform(function (flatCoordinates, flatCoordinates2, stride) {
   
   
     for (let j = 0; j < flatCoordinates.length; j += stride) {
   
   
         let y = flatCoordinates[j];
         let x = flatCoordinates[j + 1];
         flatCoordinates[j] = x;
         flatCoordinates[j + 1] = y;
     }
 });

 // 设置feature对应的属性,这些属性是根据数据源的字段来设置的
 let newFeature = new Feature();
 newFeature.setId('nyc_roads.new.' + this.newId);
 newFeature.setGeometryName('the_geom');
 newFeature.set('the_geom', null);
 newFeature.set('name', newFeature.getId());
 newFeature.setGeometry(new MultiLineString([geometry.getCoordinates()]));

而是newFeature.setGeometry(geometry);

// 转换坐标
let geometry = this.drewFeature.
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值