我们专注攀枝花网站设计 攀枝花网站制作 攀枝花网站建设
成都网站建设公司服务热线:400-028-6601

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

gis矢量切片技术 arcgis矢量切片操作

ArcGIS+deck.gl矢量切片三维化表示建筑白模

deck.gl YYDS!

成都创新互联公司专注于企业营销型网站、网站重做改版、鞍山网站定制设计、自适应品牌网站建设、H5建站商城网站开发、集团公司官网建设、成都外贸网站建设公司、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为鞍山等各大城市提供网站开发制作服务。

很多ArcGIS API for JavaScript的用户想要ArcGIS的矢量切片技术体系实现Mapbox gl将城市建筑物footprint矢量切片三维化成建筑白模的效果。效果如图:截图来自 mapbox studio 。但目前仅靠ArcGIS VectorTileServer 和 ArcGIS API for JavaScript本身无法达到这样的效果。

ArcGIS API for JavaScript先前与deck.gl已经可以通过多种方式很好的结合。参考:《 ArcGIS API 场景添加 3D Tiles 》、《 ArcGIS与deckgl结合的不同模式 》。那么我们可以去看一下deck.gl能不能利用mapbox gl矢量切片三维化的这个优势。

deck.gl与Mapbox标准的矢量切片有两种结合模式。一个是采用Mapbox底图作为程序全局底图。如: 示例程序 1

优点:可以使用托管在Mapbox gl官网的样式,直接调用Mapbox studio中创作的三维化底图。方便、美观。

缺点:1.web程序底图全局变为了mapbox底图,deck.gl被夺舍了,无法作为单一图层与ArcGIS的场景视图进行结合。

       2.mapbox服务器在外网,并且商用要收费。已经采购了ArcGIS作为内网服务器的用户没有必要额外采购和修改地图制作技术路线。

另一个技术路线是添加MVTLayer作为一个业务图层。如: 示例程序2

优点:1.作为单图层,可以借助ArcGIS + deck.gl的官方结合方式在ArcGIS地图视图和场景视图去直接使用。

       2.既支持开源生态常用的.mvt格式的矢量切片,也支持ArcGIS为代表的.pbf格式的矢量切片。直接支持ArcGIS发布的VectorTileServer。

缺点:1.在渲染层面,MVTLayer不能加载完整矢量切片style.json样式文件。只能通过deck.gl继承的GeoJSONLayer和TileLayer以及Layer的一些属性进行很有限的前端渲染。不能支持完整的 mapbox矢量切片样式标准 。

        2.在数据层面,只能一次性加载全部矢量切片服务下的子图层。在全部图层加载完毕之前,无法进行子图层的过滤。如果后端采用Mapbox世界地图{z}/{x}/{y}.mvt?access_token=token,那么会造成大量数据冗余(Mapbox过滤图层的机制是style.json样式)。如果使用ArcGIS发布的矢量切片服务,我们只需把建筑物footprint单独发布为一个服务即可。

另外:关于type:fill-extrusion的mapbox标准样式,deck.gl其实是不支持的。但他支持 GeoJSONLayer 使用extruded:true + getElevation:number的方式设置根据属性拉伸高度。

服务发布前设置建筑footprint要素类的高度字段高亮。该属性才能被写入矢量切片中。

采用默认的ArcGIS Online切片方案,将建筑物footprint图层发布矢量切片服务。

在REST点击start tile获得切片地址为:

改写为通用的{z}/{y}/{x}.pbf

以ArcGIS VectorTileServer为数据源。以 实例程序2 为蓝本,改写地址,添加一些属性。

设置名为footprint的子图层颜色为[218,218,218]。还可以设置成RGBA透明效果,如[218,128,218,128]

设置拉伸生效extruded:true,设置拉伸高度值为矢量切片的属性字段Z_Max的值。

设置最小可见比例13级。用来减少产生无切片的404请求。根据实际数据设置。

设置最大可见比例15级。用来避免出现放大和平移时建筑物消失的现象。根据实际数据情况设置。

设置继承自TileLayer的属性extent : [minX, minY, maxX, maxY]。

效果如下:

在DeckRenderer创建时设置参数getTooltip:info={ }

在layer中加入pickable:true

传统的ArcGIS API 场景视图表达三维需要使用建模转mutipatch发布SceneServer的方式 或 二维矢量面FeatureServer拉伸样式的方式。

ArcGIS+deck.gl矢量切片三维化表示建筑白模的技术路线为ArcGIS API场景视图表达三维白模增加了借助VectorTileServer的新的方式。

给ArcGIS 矢量切片增加了前端获得属性和几何的功能。

Postgis 矢量切片优化

Postgis生成矢量切片主要使用以下两个方法

geometry **ST_AsMVTGeom**( geometry var class="pdparam" style="color: rgb(153, 0, 0);"geom/var, box2d var class="pdparam" style="color: rgb(153, 0, 0);"bounds/var, integer var class="pdparam" style="color: rgb(153, 0, 0);"extent=4096/var, integer var class="pdparam" style="color: rgb(153, 0, 0);"buffer=256/var, boolean var class="pdparam" style="color: rgb(153, 0, 0);"clip_geom=true/var ) ;

Transform a geometry into the coordinate space of a Mapbox Vector Tile of a set of rows corresponding to a Layer. Makes best effort to keep and even correct validity and might collapse geometry into a lower dimension in the process.

geom is the geometry to transform.

bounds is the geometric bounds of the tile contents without buffer.

extent is the tile extent in tile coordinate space as defined by the specification . If NULL it will default to 4096.

buffer is the buffer distance in tile coordinate space to optionally clip geometries. If NULL it will default to 256.

clip_geom is a boolean to control if geometries should be clipped or encoded as is. If NULL it will default to true.

row row data with at least a geometry column.

name is the name of the layer. Default is the string "default".

extent is the tile extent in screen space as defined by the specification. Default is 4096.

geom_name is the name of the geometry column in the row data. Default is the first geometry column.

feature_id_name is the name of the Feature ID column in the row data. If NULL or negative the Feature ID is not set. The first column matching name and valid type (smallint, integer, bigint) will be used as Feature ID, and any subsequent column will be added as a property. JSON properties are not supported.

如果通过pg生成切片时间过长可以尝试减少两个函数的extent参数

比如默认是4096,可以改为512 可以明显提高计算速度,同时减少前端消耗

面试官问你对gis的掌握程度怎么回答

如实相告。

无论是就业面试还是考研面试,理论素养、技术功底、创新思维、学科前沿这些方面都是非常重要的。毕竟,GIS是一门理论性和实践性并重的应用型基础学科。无论在产业界还是学术界,单方面的专业素养都很难走远。

一、理论方面:

地理学第一定律、第二定律的内涵及其应用。以及在GIS方法层面,有哪些经典和常用的方法和模型体现了地理学定律(空间自相关性+空间异质性)。

GIS数据模型中,如何理解对象数据模型和场数据模型,及其在GIS数据建模中的重要性。

计算机、遥感、地理学等学科与GIS学科的联系与区别。

移动互联网对GIS带来了什么革命性的改变。

......

诸如以上问题,能够体现回答者对GIS理论问题的理解深度。

什么是泛在地理信息?对GIS学科有什么影响?

什么是志愿者地理信息(VGI)?

计算机聚类和空间聚类的本质区别是什么?

矢量切片的实现原理?对在线地图带来了哪些革命性的改变。

......

诸如这些问题,能够反映回答者对GIS理论及其应用的掌握广度。

二、技术功底

空间网络分析中最优路径、设施分配等模型所采用的常用算法是什么?

常用的时空数据结构有哪些?各自有什么优缺点?

地理元胞自动机的实现思路和应用特点。

遗传、蚁群等智能优化算法在解决空间分析问题时在哪些方面需要特殊逻辑?

......

教科书上传统的矢量数据结构、面积量算、叠置分析等,常识性的东西,其技术实现真不该作为技术的考察点。

三、创新思维

各GIS厂商纷纷将游戏引擎引入三维GIS,将对GIS带来哪些重要影响?

无人驾驶等智能机器人时代到来后,将赋予GIS哪些新的使命?


分享标题:gis矢量切片技术 arcgis矢量切片操作
URL链接:http://shouzuofang.com/article/doijgie.html

其他资讯