精华内容
下载资源
问答
  • 常用地图投影系列小程序

    热门讨论 2011-11-12 17:43:40
    欢迎使用常用地图投影系列小程序 本套系列程序最初在2004年4月完成,包括“3°、6°带高斯-克吕格投影正反转换程序”、“墨卡托投影正反转换程序”及“兰勃特等角投影正反转换程序”。2005年3月根据用户反馈作了更新...
  • ArcView是美国环境系统研究所(Environmental System Research Institute简称ESRI)开发研制的集成地理信息系统软件它集空间...它支持应用程序之间的通讯并提供与其它应用程序之间的接口它支持多种平台的桌面GIS系统。
  • 1. 通常GIS项目涉及到的坐标系 (1)面向局部区域的大比例尺二维平面:高斯投影(横轴墨卡托) ...高斯投影的特点是投影分带,适合小范围局部,不适合应用于大省、全国等大范围应用,若是强制按某带投影,则...

     

    1. 通常GIS项目涉及到的坐标系

    (1)面向局部区域的大比例尺二维平面:高斯投影(横轴墨卡托)

     说明:在市一级的小范围区域的GIS系统,比如规划局、国土局、建设局的系统,大都使用高斯投影,以便与地方地形图测绘、工程报建一直采用的坐标系相一致。高斯投影的特点是投影分带,适合小范围局部,不适合应用于大省、全国等大范围应用,若是强制按某带投影,则远离中央经线的区域的角度、距离、面积全部变形严重。

    (2)省级、国家级范围:兰伯特投影(圆锥投影)

    (3)国际级、世界地图:经纬度等间隔直投

    说明:“经纬度等间隔直投”的特点是相同的经纬度间隔在屏幕上的间距相等,没有复杂的坐标变换。但是只是在低纬度地区长度、角度、面积、形状变化比较小,越向高纬度,水平距离变长越大,很小的纬圈都变得和赤道一样长。同时要素自身会变形,长方形会变成上宽下窄的倒梯形。

    (4)互联网电子地图:Web墨卡托(墨卡托,正轴圆柱投影)

     

    经纬度直投与Web墨卡托区别

    分析“Web墨卡托”的投影方式,它与“原生”墨卡托的区别主要是以圆球代替椭球(这不是本文的讨论重点),他的所有经纬线也是如同“经纬度直投”一样互相垂直,高纬度地区横向也是变得很长,但他与“经纬度直投”的关键区别在于,他的纵向距离也是随着纬度增大而变长。 横向变大,同时纵向也变大,而且变化比例接近,结果就是只把一个图形“原样放大”了,而形状却没有变化。

           

    经纬度直投

    1、WGS84采用的是经纬度球面坐标系,但是也能在ArcMap(平面坐标系)中显示,原因是ArcMap对数据进行了“经纬度直投”的显示方式,即把经度当X,纬度当Y直接在笛卡尔坐标系(右手坐标系)中显示,这样直接由曲面到平面会导致地物变形。

    2、“经纬度等间隔直投”的特点是相同的经纬度间隔在屏幕上的间距相等,没有复杂的坐标变换。但是该种“投影”显示方式在低纬度地区长度、角度、面积、形状变化比较小,越向高纬度,水平距离变长越大,很小的纬圈都变得和赤道一样长。同时要素自身会变形,长方形会变成上宽下窄的倒梯形。

    3、WGS84数据在平面上显示出来之后,也可以发布成地图服务并切片。此时切片的Tiling scheme origin通常是-400,-400(为什么?)。切片是在平面坐标系下进行,就是说WGS84数据采用“经纬度直投”到平面上的坐标原点是XOrigin=-400,YOrigin=-400。

    4、关于经纬度直投还没找到相关出处,先猜测一下,后期验证:经过“投影”,赤道成为X轴(向右为正),因为赤道周长为40075016.685578488,所以X轴坐标变换范围是(-20037508.3427892,20037508.3427892);本初子午线成为Y轴(向上为正);投影得到的四个象限对应经纬度的四个象限(-180,-90)—(180,90);经纬度距离与平面距离之间的换算关系,赤道一周是360度,赤道周长是40075016.685578488,所以1度对应平面距离长度是111319.4907932722

     

     

    2. 地图投影的概念

    在数学中,投影(Project)的含义是指建立两个点集间一一对应的映射关系。同样,在地图学中,地图投影就是指建立地球表面上的点与投影平面上点之间的 一一对应关系。地图投影的基本问题就是利用一定的数学法则把地球表面上的经纬线网表示到平面上。凡是地理信息系统就必然要考虑到地图投影,地图投影的使用 保证了空间信息在地域上的联系和完整性,在各类地理信息系统的建立过程中,选择适当的地图投影系统是首先要考虑的问题。由于地球椭球体表面是曲面,而地图 通常是要绘制在平面图纸上,因此制图时首先要把曲面展为平面,然而球面是个不可展的曲面,即把它直接展为平面时,不可能不发生破裂或褶皱。若用这种具有破 裂或褶皱的平面绘制地图,显然是不实际的,所以必须采用特殊的方法将曲面展开,使其成为没有破裂或褶皱的平面。

    2.1 地图投影的变形

    变形的种类
    地 图投影的方法很多,用不同的投影方法得到的经纬线网形式不同。用地图投影的方法将球面展为平面,虽然可以保持图形的完整和连续,但它们与球面上的经纬线网 形状并不完全相似。这表明投影之后,地图上的经纬线网发生了变形,因而根据地理坐标展绘在地图上的各种地面事物,也必然随之发生变形。这种变形使地面事物 的几何特性(长度、方向、面积)受到破坏。把地图上的经纬线网与地球仪上的经纬线网进行比较,可以发现变形表现在长度、面积和角度三个方面,分别用长度 比、面积比的变化显示投影中长度变形和面积变形。如果长度变形或面积变形为零,则没有长度变形或没有面积变形。角度变形即某一角度投影后角值与它在地球表 面上固有角值之差。
    1)长度变形
    即地图上的经纬线长度与地球仪上的经纬线长度特点并不完全相同,地图上的经纬线长度并非都是按照同一比例缩小的,这表明地图上具有长度变形。
    在 地球仪上经纬线的长度具有下列特点:第一,纬线长度不等,其中赤道最长,纬度越高,纬线越短,极地的纬线长度为零;第二,在同一条纬线上,经差相同的纬线 弧长相等;第三,所有的经线长度都相等。长度变形的情况因投影而异。在同一投影上,长度变形不仅随地点而改变,在同一点上还因方向不同而不同。
    2)面积变形
    即由于地图上经纬线网格面积与地球仪经纬线网格面积的特点不同,在地图上经纬线网格面积不是按照同一比例缩小的,这表明地图上具有面积变形。
    在 地球仪上经纬线网格的面积具有下列特点:第一,在同一纬度带内,经差相同的网络面积相等。第二,在同一经度带内,纬线越高,网络面积越小。然而地图上却并 非完全如此。如在图4-9-a上,同一纬度带内,纬差相等的网格面积相等,这些面积不是按照同一比例缩小的。纬度越高,面积比例越大。在图4-9-b上, 同一纬度带内,经差相同的网格面积不等,这表明面积比例随经度的变化而变化了。由于地图上经纬线网格面积与地球仪上经纬线网格面积的特点不同,在地图上经 纬线网格面积不是按照同一比例缩小的,这表明地图上具有面积变形。面积变形的情况因投影而异。在同一投影上,面积变形因地点的不同而不同。
    3)角度变形
    是 指地图上两条所夹的角度不等于球面上相应的角度,如在图4-9-b和图4-9-c上,只有中央经线和各纬线相交成直角,其余的经线和纬线均不呈直角相交, 而在地球仪上经线和纬线处处都呈直角相交,这表明地图上有了角度变形。角度变形的情况因投影而异。在同一投影图上,角度变形因地点而变。
    地图投影的变形随地点的改变而改变,因此在一幅地图上,就很难笼统地说它有什么变形,变形有多大。

    2.2 变形椭圆

    变 形椭圆是显示变形的几何图形,从图4-9可以看到,实地上同样大小的经纬线在投影面上变成形状和大小都不相同的图形(比较图4-9中三个格网)。实际中每 种投影的变形各不相同,通过考察地球表面上一个微小的圆形(称为微分圆)在投影中的表象——变形椭圆的形状和大小,就可以反映出投影中变形的差异(图 4-10)。

    3 不同投影的选择

    世界地图的投影
    世界地图的投影主要考虑要保证全球整体变形不大,根据不同的要求,需要具有等角或等积性质,主要包括:等差分纬线多圆锥投影、正切差分纬线多圆锥投影(1976年方案)、任意伪圆柱投影、正轴等角割圆柱投影。
    半球地图的投影
    东、西半球有横轴等面积方位投影、横轴等角方位投影;南、北半球有正轴等面积方位投影、正轴等角方位投影、正轴等距离方位投影。
    各大洲地图投影
    1)亚洲地图的投影:斜轴等面积方位投影、彭纳投影。
    2)欧洲地图的投影:斜轴等面积方位投影、正轴等角圆锥投影。
    3)北美洲地图的投影:斜轴等面积方位投影、彭纳投影。
    4)南美洲地图的投影:斜轴等面积方位投影、桑逊投影。
    5)澳洲地图的投影:斜轴等面积方位投影、正轴等角圆锥投影。
    6)拉丁美洲地图的投影:斜轴等面积方位投影。
    中国各种地图投影
    1)中国全国地图投影:斜轴等面积方位投影、斜轴等角方位投影、彭纳投影、伪方位投影、正轴等面积割圆锥投影、正轴等角割圆锥投影。
    2)中国分省(区)地图的投影:正轴等角割圆锥投影、正轴等面积割圆锥投影、正轴等角圆柱投影、高斯-克吕格投影(宽带)。
    3)中国大比例尺地图的投影:多面体投影(北洋军阀时期)、等角割圆锥投影(兰勃特投影)(解放前)、高斯-克吕格投影(解放以后)。

    4 典型的投影介绍

    4.1 高斯——克吕格投影

    由于这个投影是由德国数学家、物理学家、天文学家高斯于19世纪20年代拟定,后经德国大地测量学家克吕格于1912年对投影公式加以补充,故称为高斯——克吕格投影。
    高 斯——克吕格投影在英美国家称为横轴墨卡托投影。美国编制世界各地军用地图和地球资源卫星象片所采用的全球横轴墨卡托投影(UTM)是横轴墨卡托投影的一 种变型。高斯克吕格投影的中央经线长度比等于1,UTM投影规定中央经线长度比为0.9996。在6度带内最大长度变形不超过0.04%。
    高斯克 吕格投影的中央经线和赤道为互相垂直的直线,其他经线均为凹向并对称于中央经线的曲线,其他纬线均为以赤道为对称轴的向两极弯曲的曲线,经纬线成直角相 交。在这个投影上,角度没有变形。中央经线长度比等于1,没有长度变形,其余经线长度比均大于1,长度变形为正,距中央经线愈远变形愈大,最大变形在边缘 经线与赤道的交点上;面积变形也是距中央经线愈远,变形愈大。为了保证地图的精度,采用分带投影方法,即将投影范围的东西界加以限制,使其变形不超过一定 的限度,这样把许多带结合起来,可成为整个区域的投影(图4-12)。高斯——克吕格投影的变形特征是:在同一条经线上,长度变形随纬度的降低而增大,在 赤道处为最大;在同一条纬线上,长度变形随经差的增加而增大,且增大速度较快。在6度带范围内,长度最大变形不超过0.14%。


    我国规定1:1万、1:2.5万、1:5万、1:10万、1:25万、1:50万比例尺地形图,均采用高斯克吕格投影。1:2.5至1:50万比例尺地形图采用经差6度分带,1:1万比例尺地形图采用经差3度分带。
    6度带是从0度子午线起,自西向东每隔经差6为一投影带,全球分为60带,各带的带号用自然序数1,2,3,…60表示。即以东经0-6为第1带,其中央经线为3E,东经6-12为第2带,其中央经线为9E,其余类推(图4-13)。
    3度带,是从东经1度30分的经线开始,每隔3度为一带,全球划分为120个投影带。图4-13表示出6度带与3度带的中央经线与带号的关系。
    在高斯克吕格投影上,规定以中央经线为X轴,赤道为Y轴,两轴的交点为坐标原点。


    X坐标值在赤道以北为正,以南为负;Y坐标值在中央经线以东为正,以西为负。我国在北半球,X坐标皆为正值。Y坐标在中央经线以西为负值,运用起来很不方便。为了避免Y坐标出现负值,将各带的坐标纵轴西移500公里,即将所有Y值都加500公里。
    由于采用了分带方法,各带的投影完全相同,某一坐标值(x,y),在每一投影带中均有一个,在全球则有60个同样的坐标值,不能确切表示该点的位置。因此,在Y值前,需冠以带号,这样的坐标称为通用坐标。
    高斯克吕格投影各带是按相同经差划分的,只要计算出一带各点的坐标,其余各带都是适用的。这个投影的坐标值由国家测绘部门根据地形图比例尺系列,事先计算制成坐标表,供作业单位使用。

     

    5 ArcGIS 几何对象和空间坐标系的转换

     空间数据都有一个坐标系统(即地理坐标系统或投影坐标系统),它定义了空间数据在地球上的位置。一幅地图上显示的空间数据地理坐标系是一致的,否则会造成数据无法正确拼合。

     地理坐标系统也称为真实世界的坐标系,是确定地物在地球上位置的坐标系,以经纬度作为地图的存储单位。

     投影坐标系统是将三纬地理坐标系统上的经纬网投影到二纬平面地图上使用的坐标系统,因此地理信息系统必须要考虑地图投影,地图投影的使用保证了空间信息在地域上的联系和完整性,在各类地理信息系统的建设过程中,都要考虑选择何种地里投影系统。

       Arc Engine提供了3种组件:ProjectedCoordinateSystem、GeographicCoordinateSystem和SpatialReferenceEnvironmentClass,这些组件可以用于自定义坐标系统。

    复制代码
    //改变一个图层的空间参考
    ESRI.ArcGIS.Carto.IFeatureLayer player;
    player = axMapControl1.Map.get_Layer(0) as ESRI.ArcGIS.Carto.IFeatureLayer;
    ESRI.ArcGIS.Geodatabase.IFeatureClass pFeatureClass;
    pFeatureClass = player.FeatureClass;
    ESRI.ArcGIS.Geodatabase.IDataset pGeoDataset;
    pGeoDataset = pFeatureClass as ESRI.ArcGIS.Geodatabase.IDataset;
    ESRI.ArcGIS.Geodatabase.IGeoDatasetSchemaEdit pGeoDatasetEdit;
    pGeoDatasetEdit = pGeoDataset as ESRI.ArcGIS.Geodatabase.IGeoDatasetSchemaEdit;
    if (pGeoDatasetEdit.CanAlterSpatialReference == true)
    {
        ESRI.ArcGIS.Geometry.ISpatialReferenceFactory2 pSpatRefFact;
        pSpatRefFact = new ESRI.ArcGIS.Geometry.SpatialReferenceEnvironmentClass();
        ESRI.ArcGIS.Geometry.IGeographicCoordinateSystem pGeoSys;
        pGeoSys = pSpatRefFact.CreateGeographicCoordinateSystem(4214);
        pGeoDatasetEdit.AlterSpatialReference(pGeoSys);
    }
    pActiveView.Refresh();
     
    //得到一个图层的空间参考
    ESRI.ArcGIS.Carto.IFeatureLayer player;
    player = axMapControl1.Map.get_Layer(0) as ESRI.ArcGIS.Carto.IFeatureLayer;
               
    ESRI.ArcGIS.Geodatabase.IGeoDataset pGeoDataset;
    pGeoDataset = player as ESRI.ArcGIS.Geodatabase.IGeoDataset;
    ESRI.ArcGIS.Geometry.ISpatialReference pSpat;
    pSpat =pGeoDataset.SpatialReference;
    MessageBox.Show(pSpat.Name)
     
    //设置一个地图的空间参考,使用一个空间参考对话框
    IProjectedCoordinateSystem pSpaticalReference;
    ESRI.ArcGIS.CatalogUI.ISpatialReferenceDialog pDialog;
    pDialog = new ESRI.ArcGIS.CatalogUI.SpatialReferenceDialogClass();
    pSpaticalReference = pDialog.DoModalCreate(true, false, false, 0) as IProjectedCoordinateSystem;
    pMap.SpatialReference = pSpaticalReference;
    pActiveView.Refresh();
    复制代码

     

       Arc Engine的空间参考对象模型中有3个组件类:GeographicCoordinateSy(地理坐标系统)、ProjectedCoordinateSystem(投影坐标系统)和UnknownCoordinateSystem(未知坐标系统)。这3个组件类都都实现了ISpatialReference接口,该接口提供了操作方法和属性来设置数据集控件参考属性,如空间域和坐标精度等。如Changed是这个接口中最重要的一个方法,用于检查一个坐标系统中的参数是否发生了变化;GetDomain和SetDomain方法分别用于获取和设置一个坐标系统的域范围。

        IGeographicCoordinateSystem是GeographicCoordinateSystem类接口,提供了CoordinateUnit(坐标系的角度单位)、Datum(椭球体)和PrimeMeridian(本初子午线)等属性。

        IProjectedCoordinateSystem是ProjectedCoordinateSystem类的接口,该接口提供了新建一个投影坐标系统的方法。在一个新的投影坐标系统中,需要设置projection(投影方式)、GeographicCoordinateSystem、CoordinateUnit和Parameters等。

     

     

    参考文章

    狂暴小生, GIS基础:地图投影与坐标系

    樱木GIS项目涉及到的坐标系总结

    樱木,几何对象和空间坐标系

     

    没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。



        本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/6110268.html ,如需转载请自行联系原作者


    展开全文
  • 为什么要做地图投影 简而言之,地球表面是一个三维的曲面,在曲面上进行测量是非常困难的。不信你拿个地球仪量一下两点的距离或者计算个夹角试试。将三维的曲面投影到二维平面,这样我们学的平面几何才有用武之地。 ...

    (如需转载,请在显著位置注明个人微信公众号stdrei)

    为什么要做地图投影

    简而言之,地球表面是一个三维的曲面,在曲面上进行测量是非常困难的。不信你拿个地球仪量一下两点的距离或者计算个夹角试试。将三维的曲面投影到二维平面,这样我们学的平面几何才有用武之地。

    youtube - Adventures with GIS: an introduction to IPython and the joy of play

    什么是投影

    如果要了解地图投影,首先需要知道地理坐标系投影坐标系。简单的说,地理坐标系是参考平面为椭球面的球面坐标,最常见的是以经纬度来量算的球面坐标系统。投影坐标系是定义在一个二维平面的坐标系统,其地图单位通常为米。将球面坐标转化为平面坐标的过程便称为投影。 因此,投影坐标系总是基于地理坐标系的(连坐标系都要讲出身的)。

    因为地球是一个赤道略宽两极略扁的不规则的梨形球体,其表面是一个不可展平的曲面,所以运用任何数学方法进行这种投影转换都会产生误差和变形,为按照不同的需求缩小误差,就产生了各种投影方法。比如这篇很有意思的文章你所不知的有趣投影方法。也可以看文末的几幅地球不同投影的图。

    EPSG Code

    如果经常跟地图打交道,你一定会被各种花式投影变换弄的眼花缭乱。EPSGEuropean Petroleum Survey Group (EPSG)成立于1986年,并在2005年重组为OGP(Internation Association of Oil & Gas Producers),它负责维护并发布坐标参照系统的数据集参数,以及坐标转换描述,该数据集被广泛接受并使用,通过一个Web发布平台进行分发,同时提供了微软Acess数据库的存储文件,通过SQL 脚本文件,MySQL, Oracle 和PostgreSQL等数据库也可使用。目前已有的椭球体,投影坐标系等不同组合都对应着不同的ID号,这个号在EPSG中被称为EPSG code,它代表特定的椭球体、单位、地理坐标系或投影坐标系等信息。

    开源的QGIS软件中就直接采用了EPSG。

    The CRSs available in QGIS are based on those defined by the European Petroleum Search Group (EPSG) and the Institut Geographique National de France (IGNF) and are largely abstracted from the spatial reference tables used in GDAL. EPSG identifiers are present in the database and can be used to specify a CRS in QGIS.

    一个查询EPSG code的网站 epsg.io

    pyproj小试牛刀

    pyproj是PROJ4的python接口封装,直接看一个官网的例子吧。直接利用epsg code来定义投影参数。

    from pyproj import Proj,transform
    
    # The Proj class can convert from geographic (longitude,latitude)
    # to native map projection (x,y) coordinates and vice versa, 
    # or from one map projection coordinate system directly to another.
    
    p1 = Proj(init='epsg:26915')
    p2 = Proj(init='epsg:26715')
    x1, y1 = p1(-92.199881,38.56694)
    x2, y2 = transform(p1,p2,x1,y1)
    print '%9.3f %11.3f' % (x1,y1)
    print '%9.3f %11.3f' % (x2,y2)

    输出为

    569704.566 4269024.671
    569722.342 4268814.027

    基于geopandas的矢量地图投影

    import shapely, geopandas, fiona
    import seaborn as sns
    from fiona.crs import from_epsg,from_string
    
    # Data
    shp = 'E:\NationalGISdata\Province.shp'
    
    shp_df = geopandas.GeoDataFrame.from_file(shp)
    # #IndexError报错的话,用arcgis将shapefile文件重新导出一遍试试
    shp_df.head()

    # 根据当前的兰伯特投影绘制
    shp_df.plot(column="GDP_1994",colormap='Set1')

    # 转换到经纬度坐标
    shp_df_wgs84 = shp_df.to_crs(from_epsg(4326))
    shp_df_wgs84.plot(column="GDP_1994",colormap='Set1')

    # 国家2000坐标系
    # EPSG:4508  CGCS2000 / Gauss-Kruger CM 111E
    shp_df_4508 = shp_df.to_crs(from_epsg(4508))
    shp_df_4508.plot(column="GDP_1994",colormap='Set1')

    # 除了直接用ESPG code,也可以自己定义投影参数
    
    ESRI_54024 = """
    +proj=bonne +lon_0=0 +lat_1=60 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs 
    
    shp_df_3408 = shp_df.to_crs(from_string(ESRI_54024))
    shp_df_3408.plot(column="GDP_1994",colormap='Set1')

    代码和矢量地图数据下载

    百度网盘下载地址: http://pan.baidu.com/s/1c1BExH2
    密码请在关注微信公众号stdrei后,输入projection直接获取。

    拓展:同一个世界,不同的面孔

    链接 http://www.viewsoftheworld.ne...

    在不同投影下的这个世界。。。

    展开全文
  • 针对Web墨卡托投影地图用于地理信息系统开发时其第三方应用程序接口仅支持浏览器/服务器模式的问题, 采用墨卡托投影式的变形并结合数据分片技术, 以Google地图为例提出一种Web墨卡托投影地图用于客户端/服务器模式的...
  • 有IProjectedCoordinateSystemEdit接口,但如下所示的方法全然看不懂该传什么值给它,帮助文件也没有任何补偿,很难学习! public void Define (  ref object Name,  ref object Alias,  ref object ...

    用ArcMap.VBA代码表示如下:

    ----------------------------------------------------------------------------------
    Private Sub projectUsage()
        'wanxiangqian@163.com, 2007-10-29
         
        'Set up spatial references
        Dim facSR As SpatialReferenceEnvironment
        Set facSR = New SpatialReferenceEnvironment
       
        Dim srcSR As IGeographicCoordinateSystem
        Set srcSR = facSR.CreateGeographicCoordinateSystem(esriSRGeoCS_Xian1980) 'esriSRSpheroid_Xian1980
       
        Dim destSR As IProjectedCoordinateSystem
        Set destSR = facSR.CreateProjectedCoordinateSystem(esriSRProjCS_Xian1980_GK_CM_111E)
       
        'Set up Point for transforming
        Dim pt As IPoint
        Set pt = New Point
        pt.x = 111
        pt.y = 30
       
        Set pt.SpatialReference = srcSR
        pt.Project destSR
        MsgBox "(" & pt.x & "," & pt.y & ")"
       
        Set pt.SpatialReference = destSR
        pt.Project srcSR
        MsgBox "(" & pt.x & "," & pt.y & ")"
       
    End Sub
    ----------------------------------------------------------------------------------
    找到esriSRProjCS_Xian1980_GK_CM_111E、esriSRGeoCS_Xian1980、esriSRSpheroid_Xian1980这些常量可不容易!

    有IProjectedCoordinateSystemEdit接口,但如下所示的方法全然看不懂该传什么值给它,帮助文件也没有任何补偿,很难学习!
    public void Define (

        ref object Name,

        ref object Alias,

        ref object Abbreviation,

        ref object Remarks,

        ref object useage,

        ref object gcs,

        ref object projectedUnit,

        ref object Projection,

        ref object parameters

    );

    下面是帮助文件对参数列表的说明:

    Name   To indicate that this parameter is undefined, first define a variable object Missing = Type.Missing; then pass this in as ref Missing.

    Alias   To indicate that this parameter is undefined, first define a variable object Missing = Type.Missing; then pass this in as ref Missing.

    Abbreviation   To indicate that this parameter is undefined, first define a variable object Missing = Type.Missing; then pass this in as ref Missing.

    Remarks   To indicate that this parameter is undefined, first define a variable object Missing = Type.Missing; then pass this in as ref Missing.

    useage   To indicate that this parameter is undefined, first define a variable object Missing = Type.Missing; then pass this in as ref Missing.

    gcs   To indicate that this parameter is undefined, first define a variable object Missing = Type.Missing; then pass this in as ref Missing.

    projectedUnit   To indicate that this parameter is undefined, first define a variable object Missing = Type.Missing; then pass this in as ref Missing.

    Projection   To indicate that this parameter is undefined, first define a variable object Missing = Type.Missing; then pass this in as ref Missing.

    parameters   To indicate that this parameter is undefined, first define a variable object Missing = Type.Missing; then pass this in as ref Missing.

    ——不明确每个参数的类型。

     

    教训:接口上使用VARIANT作为数据类型,一定要在帮助文件里说明实际的数据类型。因为此时接口的prototype不能传递任何信息,全靠应用域知识。

     

    展开全文
  • 将百度地图平面投影坐标(墨卡托)转换为经纬度坐标 用在什么场景 使用PHP来调用百度地图API,某些情况下得到的是投影坐标,需要转换为经纬度坐标 为什么要写这个东西 首先,百度地图最好用 第二,百度接口很不准,...
  • python 绘制世界地图,添加海岸线、陆地、投影等 tips:最近在学习python的模块:matplotlib 为画全球的要素分布做准备 在此之前,先学习一下如何绘制世界地图,以及一些投影的使用。 首先引用如下三个库 import ...

    python 绘制世界地图,添加海岸线、陆地、投影等


    tips:最近在学习python的模块:matplotlib
    为画全球的要素分布做准备
    在此之前,先学习一下如何绘制世界地图,以及一些投影的使用。

    首先引用如下三个库

    import cartopy.crs as ccrs
    import matplotlib.pyplot as plt
    import cartopy.feature as cfeature
    

    其中,Cartopy是一个Python库,用于地理空间数据处理,以便生成地图和其他地理空间数据分析。
    matplotlib.pyplot是matplotlib基于状态的接口。 它提供了类似于MATLAB的绘图方式。
    pyplot主要用于交互式绘图和程序化绘图生成的简单情况:

    import numpy as np
    import matplotlib.pyplot as plt
    x = np.arange(0, 5, 0.1)
    y = np.sin(x)
    plt.plot(x, y)
    

    成图如下:
    在这里插入图片描述为了使地图更加多样化,可以引入cartopy.feature ,内置了许多有用的功能。这些“默认功能”的分辨率为110m。

    cartopy.feature.BORDERS Country boundaries#添加城市边界
    cartopy.feature.COASTLINE Coastline, including major islands cartopy.feature.LAKES Natural and artificial lakes
    cartopy.feature.LAND Land polygons, including major islands
    cartopy.feature.OCEAN Ocean polygons
    cartopy.feature.RIVERS Single-line drainages, including lake centerlines
    cartopy.feature.STATES (limited to the United States at this scale)
    

    下面开始绘图,在绘图之前,要先准备一个画板,然后设置你需要的投影方式。

    import matplotlib.pyplot as plt
    import cartopy.crs as ccrs
    import cartopy.feature as cfeature
    fig=plt.figure(figsize=(20,15))#设置一个画板,将其返还给fig
    ax = fig.add_subplot(1, 1, 1, projection=ccrs.PlateCarree())
    plt.show()
    # 在一个画板中添加子图,并设置投影方式。1,1,1分别代表行、列、在网格中子图位置。并将其返回给ax
    

    在这里插入图片描述
    下面添加海岸线:

    import matplotlib.pyplot as plt
    import cartopy.crs as ccrs
    import cartopy.feature as cfeature
    fig=plt.figure(figsize=(20,15))#设置一个画板,将其返还给fig
    ax = fig.add_subplot(1, 1, 1, projection=ccrs.PlateCarree())
    ax.coastlines()
    plt.show()
    

    在这里插入图片描述
    当当当,这样就有点雏形啦,下面可以再加上一点自己感兴趣的东西,比如给他加上地球背景。加上如下一句代码试试发生了什么?

    ax.stock_img()#添加地球背景
    

    在这里插入图片描述嗯~真不错!
    还记得开始前介绍的cartopy.feature吗?使图片更加多元就靠他啦,加上你想要的元素,我这里加入了海洋,陆地,湖泊,河流,网格线,让我们看看效果:

    ax.add_feature(cfeature.OCEAN)
    ax.add_feature(cfeature.LAND, edgecolor='black')
    ax.add_feature(cfeature.LAKES, edgecolor='black')#边缘为黑色
    ax.add_feature(cfeature.RIVERS)
    rivers_110m = cfeature.NaturalEarthFeature('physical', 'rivers_lake_centerlines', '110m')
    ax.add_feature(rivers_110m, facecolor='None', edgecolor='b')
    ax.gridlines(draw_labels=True, xlocs=[-179, -90, 0, 90,179])#添加网格线,true
    

    在这里插入图片描述乍一看感觉不是很明显,这是因为我们再次之前已经加上地球背景了,我们可以将那句代码去掉再看看效果。

    import matplotlib.pyplot as plt
    import cartopy.crs as ccrs
    import cartopy.feature as cfeature
    fig=plt.figure(figsize=(20,15))#设置一个画板,将其返还给fig
    ax = fig.add_subplot(1, 1, 1, projection=ccrs.PlateCarree())
    ax.coastlines()
    ax.add_feature(cfeature.OCEAN)
    ax.add_feature(cfeature.LAND, edgecolor='black')
    ax.add_feature(cfeature.LAKES, edgecolor='black')#边缘为黑色
    ax.add_feature(cfeature.RIVERS)
    rivers_110m = cfeature.NaturalEarthFeature('physical', 'rivers_lake_centerlines', '110m')
    ax.add_feature(rivers_110m, facecolor='None', edgecolor='b')
    ax.gridlines(draw_labels=True, xlocs=[-179, -90, 0, 90,179])#添加网格线,true
    
    

    可以这样子就比较明了啦!
    分享一些其他的小技巧以及投影:

    
    set_global - zoom the map out as much as possible#尽可能缩小地图
    set_extent - zoom the map to the given bounding box#将地图缩放到给定的边界框
    gridlines - add a graticule (and optionally labels) to the axes#在轴上添加刻度线(和可选的标签)
    coastlines - add Natural Earth coastlines to the axes#给轴上添加自然的地球海岸线
    stock_img - add a low-resolution Natural Earth background image to the axes#将低分辨率自然地球背景图像添加到轴
    imshow - add an image (numpy array) to the axes#向轴添加图像(numpy数组)
    add_geometries - add a collection of geometries (Shapely) to the axes#向轴添加几何形状(形状)集合
    projections = [ccrs.PlateCarree(),
                   ccrs.Robinson(),
                   ccrs.Mercator(),
                   ccrs.Orthographic(),
                   ccrs.InterruptedGoodeHomolosine()
                  ]
                  #具体作用可以自己尝试!!!
    

    最后的最后,把绘制部分区域的代码也贴上啦

    import matplotlib.pyplot as plt
    import cartopy.feature as cfeature
    import numpy as np
    import cartopy.crs as ccrs
    
    
    central_lat = 37.5
    central_lon = -96
    extent = [28, 45, -25, 2]
    central_lon = np.mean(extent[:2])
    central_lat = np.mean(extent[2:])
    
    fig=plt.figure(figsize=(20, 15))
    ax = fig.add_subplot(1, 1, 1, projection=ccrs.EquidistantConic(central_lon, central_lat))
    ax.set_extent(extent)
    ax.add_feature(cfeature.OCEAN)
    ax.add_feature(cfeature.LAND, edgecolor='black')
    ax.add_feature(cfeature.LAKES, edgecolor='black')
    ax.add_feature(cfeature.RIVERS)
    ax.gridlines()
    

    在这里插入图片描述

    		      						一个努力学习python的海洋小白
    		                            水平有限,欢迎指正!!!
    		                            欢迎评论、收藏。
    
    展开全文
  • 地图API及服务接口调用418错误

    万次阅读 热门讨论 2019-01-21 14:01:20
    地图API及服务接口调用418错误 几个月前写的天地图API调用,今天发布一下竟然返回“418,抱歉,您的请求被拦截,因为您的请求疑似攻击行为!”,以为是ip被黑名单了,换了ip也不行,去官网才发现自2019年1月1日起...
  • 百度地图接口1

    2014-07-24 10:56:00
    MapView提供了这种投影变换。 参数: in - 待变换的一对经纬度 out - 一个用于输出预先存在的对象;如果为空,将返回一个新分配的像素点。    <3>MapController 处理地图移动和缩放的工具类。 ...
  • Google 地图API 参考手册 地图 构造函数/对象描述 Map() 在指定的 HTML 容器中创建新的地图,该容器通常是一个DIV元素。 叠加层 构造函数/对象描述 Marker 创建一个标记。 ...
  • 地图影像资源接口API地址

    千次阅读 2020-03-08 19:55:44
    1.天地图影像 http://{subDomain}.tianditu.gov.cn/img_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEM...
  • 对当前帧进行地图点重投影和特征对齐 // map reprojection & feature alignment SVO_START_TIMER("reproject"); reprojector_.reprojectMap(new_frame_, overlap_kfs_); SVO_STOP_TIMER("reproject");...
  • SuperMap iClient3D for WebGL 用 WebMapTileServiceImageryProvider 接口加载天地图 WMTS 服务申请天地图开发者 token读懂能力文档和 WMTS 接口参数1. WebGL 接口 API2. 天地图能力文档3. 对照能力文档填写 WMTS ...
  • Skyline 支持国内常见的地图投影坐标系,包括WGS84、Beijing54、西安80、2000坐标系等,也可以自定义坐标系,比如一些做过参数变换加密的坐标系等。 <!DOCTYPE ...
  • 2.7.1 投影地图数据坐标系对象MapObjects定义的投影模型特殊,使用的术语特殊,本节讲述的内容只适用于MapObjects组件程序设计。将地物的地理坐标(经纬度)转换成平面直角坐标称为投影地图数据用平面直角坐标表示...
  • // 使用id为map的div容器初始化地图,同时指定地图的中心点和缩放级别 BM.Config.HTTP_URL = ''; var map = BM.map('map','mapid', { center: [51.505, -0.09], zoom: 13 }); 创建 构造 描述 BM.map(<...
  • --官网接口。--> <script src="https://js.arcgis.com/4.11/"></script> html, body, #map { width: 100%; height: 100%; padding: 0; margin: 0; } // 参考:...
  • 自己开发的基于DevExpress 16.1.1的ribbon主流界面(类似于平时所用的word扁平化界面),主要实现基本的地图功能和投影变换/坐标转换/矢量地图配准/七参数计算和应用等功能。对于2000坐标的转换,软件自带了国家2000...
  • 转自 http://www.blogjava.net/tim-wu/archive/2006/05/11/45464.html 偷懒了一个月,今天终于重新修改了mapeasy中的球平算法应用。...google map api中有个很有用的接口:GProjection,官方对这个接口的解释是: 
  • 相关教程: 1、如何搭建WEB离线地图开发环境 ... 3、离线地图二次开发接口(离线地图API) 4、离线地图API接口实例DEMO 5、离线地图完整演示实例 说明: 1.当前版本支持 谷歌电子/卫星地图瓦片、...
  • 地图相关 //地图相关demo mapFun: function () { //获取地图中心点 let center = this.mapView.center; //地图中心点坐标(同地图坐标系) let x = center.x; ...
  • 导读: 偷懒了一个月,今天终于重新修改了mapeasy中的球平算法应用。... google map api中有个很有用的接口:GProjection,官方对这个接口的解释是: This is the interface for map projections. A map projec
  • 矢量数据投影转换

    千次阅读 2018-06-04 06:16:55
    矢量数据投影转换 作者:阿振 邮箱:tanzhenyugis@163.com 博客:https://blog.csdn.net/theonegis/article/details/80089375 修改时间:2018-06-03 声明:本文为博主原创文章,转载请注明原文出处 案例...
  • 经纬度坐标和投影坐标的转换

    万次阅读 2015-12-11 09:28:22
    昨天,有朋友要我帮忙看看一个将经纬度坐标转换成墨卡托投影(墨卡托投影有很多变种,我也不知道他说的是哪一种)的程序,他说转换以后的坐标精度太差。当时,他的程序没怎么看懂,然后研究了一下Geotools,自己写了...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,245
精华内容 1,698
关键字:

地图投影接口