Supermap for Leaflet管线定位

项目场景:

本人做的系统是基于SuperMap for Leaflet 进行的二次开发,在开发过程中需要用到对管点、管线等设施进行定位操作。在网上查询了大量资料都没有符合的,终于机缘巧合下找到了方法。


问题描述

要求:在二维地图上显示的管线(管点等其他设施同理)并进行定位。
前期准备:利用Supermap iDesktop处理好数据后,将其发布为地图服务和数据服务。我利用如下代码获取数据服务中管线的所有数据(这些数据中包含了管线的几何信息)。
从数据服务中获取管线信息代码(.js文件):

export default class DataRequire {

    static getLinesData(){
      //用于存储所有管线信息 
      var szLine = []
      // 将line数据信息修改为对象数组
      var lineJSON = []
      
      var sqlParameter = {
          "datasetNames": ["szPL:Line_2D"],
          "getFeatureMode": "SQL",
          "queryParameter": {
          attributeFilter: 'SMID<1430'
         }
       }
       var queryData = JSON.stringify(sqlParameter)
       $.ajax({
          type: "POST",
          url: 'http://localhost:8090/iserver/services/data-szPL/rest/data/featureResults.rjson?returnContent=true',
          data: queryData,
          async: false,
          success: (result) => {
              szLine = JSON.parse(result)
              // console.log(szLine);
          },
          error: function (msg) {
            console.log(msg)
          }
        })
        for(let i=0;i < szLine.features.length;i++){
          lineJSON.push({
          //管线的中心点坐标
            center:szLine.features[i].geometry.center
          })
        }
       
        return {szLine,lineJSON}
  }

飞行定位功能代码(.js文件):

    //  坐标转换:EPSG:4529转EPSG:4326(WGS84) 及 查询功能中的飞行定位功能
    static flyToPosition(CenterX,CenterY){
        // 坐标转换
        // 参考官网:http://proj4js.org/
        var firstProjection="+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0=0 +ellps=GRS80 +units=m +no_defs +type=crs"
        var point = proj4(firstProjection).inverse([CenterX,CenterY])
        var positionLatlng = L.latLng(point);
        // 飞行定位
        this.map.flyTo(positionLatlng)
    }

原因分析:

如下图所示,通过查询数据服务获取的信息中本身就包含有其几何信息,只需要调用leaflet中的flyTo方法即可进行飞行定位。其中数据查询还可以参考超图官网中的查询方法,都可以拿到管线的位置几何信息。

在这里插入图片描述
在这里插入图片描述
(其他的查询方式同理)


总结:

上述代码中提到的重新定义supermap坐标系将会在后续发布

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值