https://desktop.arcgis.com/zh-cn/arcmap/latest/extensions/3d-analyst/multipatches.htm
为了避免Z值与X,Y值的单位存在冲突,应该将X,Y从地理坐标转到投影坐标,也就是从度分秒转为以米为单位。计算完坐标插值之后,再转为wgs84,可是z值怎么在地理坐标系和投影坐标系之间转化呢?Multipatch可以进行坐标转换吗?三维坐标投影转换参照:threejs坐标转换 三维坐标 三维坐标系(顺便复习一下极坐标和直角坐标系)
Z值如果不表明,那么在生成Multipatch的时候是默认Z为度的。。那么Z值在投影坐标系下位置是正确的。生成的Multipatch也是正确的。可是怎么把投影坐标系下生成的Multipatch转到地理坐标系中呢?
原始:(WGS84)
坐标转换:(wgs84 Web Mercator)
//坐标转换 private IPoint GetpProjectPoint(IPoint pPoint,bool pBool) { ISpatialReferenceFactory pSpatialReferenceEnvironemnt=new SpatialReferenceEnvironment(); ISpatialReference pFromSpatialReference = pSpatialReferenceEnvironemnt.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_WGS1984);//西安80 esriSRGeoCS3Type..esriSRGeoCS_Xian1980 ISpatialReference pToSpatialReference = pSpatialReferenceEnvironemnt.CreateProjectedCoordinateSystem((int)esriSRProjCS3Type.esriSRProjCS_WGS1984WebMercatorMajorAuxSphere);//西安80 esriSRProjCS4Type.esriSRProjCS_Xian1980_3_Degree_GK_Zone_34 if(pBool==true)//球面转平面 { IGeometry pGeo=(IGeometry)pPoint; pGeo.SpatialReference=pFromSpatialReference; pGeo.Project(pToSpatialReference); return pPoint; } else//平面转球面 { IGeometry pGeo=(IGeometry)pPoint; pGeo.SpatialReference=pToSpatialReference; pGeo.Project(pFromSpatialReference); return pPoint; } }
坐标插值:
转回wgs84:
球极坐标:https://baike.baidu.com/item/%E6%9E%81%E5%9D%90%E6%A0%87/7607962?fr=aladdin
三维直角坐标系和球极坐标之间的转换关系:
球面上的所有点,默认都是高程为0。而假设高程不为0,那么,就出现了另一个半径为ρ+h的新球,
那么,不同的高程就有无数个球,那么对于三维来说最好的坐标系其实是直角坐标系。因为无论是地理坐标系,还是投影坐标系,似乎参考椭球都是唯一的。
Z值的坐标系和单位怎么设置(垂直坐标系:Vertical Coordinate System)
A vertical coordinate system defines the origin for height or depth values. Like a horizontal coordinate system, most of the information in a vertical coordinate system is not needed unless you want to display or combine a dataset with other data that uses a different vertical coordinate system.
Perhaps the most important part of a vertical coordinate system is its unit of measure. The unit of measure is always linear (e.g., international feet or meters). Another important part is whether the z values represent heights (elevations) or depths. For each type, the z-axis direction is positive "up" or "down", respectively.
One z value is shown for the height-based mean sea level system. Any point that falls below the mean sea level line but is referenced to it will have a negative z value. The mean low water system has two z values associated with it. Because the mean low water system is depth-based, the z values are positive. Any point that falls above the mean low water line but is referenced to it will have a negative z value.
不知为何,Z值只有在墨卡托投影下才能正常显示。。。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
2019-01-28 清华大学开源软件镜像站