我的github
posts - 3243,  comments - 42,  views - 158万

 

 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.

 

 https://desktop.arcgis.com/zh-cn/arcmap/10.6/map/projections/fundamentals-of-vertical-coordinate-systems.htm

不知为何,Z值只有在墨卡托投影下才能正常显示。。。

posted on   XiaoNiuFeiTian  阅读(1071)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
历史上的今天:
2019-01-28 清华大学开源软件镜像站
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示