zoukankan      html  css  js  c++  java
  • Mapxtreme添加图元类库

    using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;
    using EditInfo;

    using MapInfo.Mapping;
    using MapInfo.Styles;
    using MapInfo.Windows.Dialogs;
    using MapInfo.Geometry;
    using MapInfo.Data;
    using MapInfo.Engine;
    using System.Collections.Generic;
    namespace MapControlClass
    {
        public class MapControlLayer
        {
            private MapInfo.Windows.Controls.MapControl ControlMap;

            public MapControlLayer()
            {

                ControlMap = MapMainControl.ControlMap;
                Microsoft.Win32.RegistryKey key =
                    Microsoft.Win32.Registry.LocalMachine.CreateSubKey(@"SOFTWARE\TRANSGIS\Mapinfo\DATA");
                string s = (string)key.GetValue("SampleDataSearchPath");
                if (s != null && s.Length > 0)
                {
                    if (s.EndsWith("\\") == false)
                    {
                        s += "\\";
                    }
                }
                else
                {
                    s = Environment.CurrentDirectory;
                }
                key.Close();

                MapInfo.Engine.Session.Current.TableSearchPath.Path = s;
                //string geoSetName = "world.gst";
                //try
                //{

                //    ControlMap.Map.Load(new MapGeosetLoader(s + geoSetName));
                //}
                //catch (Exception)
                //{
                //    MessageBox.Show("Geoset " + geoSetName + " not found.");
                //}
            }
                   /// <summary>
            /// 显示标注图层
            /// </summary>
            /// <param name="tableName">表名</param>
            /// <param name="columnName">列名</param>
            public void ShowLabelLayer(string tableName, string columnName)
            {
                MapInfo.Mapping.Map myMap = MapInfo.Engine.Session.Current.MapFactory[ControlMap.Map.Alias];

                //新建标注图层
                LabelLayer labelLayer = new LabelLayer();
                myMap.Layers.Add(labelLayer);
                //指定要标注的数据表
                LabelSource labelSource = new LabelSource(MapInfo.Engine.Session.Current.Catalog.GetTable(tableName));
                labelLayer.Sources.Append(labelSource);

                //指定要标准字段所在的列
                labelSource.DefaultLabelProperties.Caption = columnName;
                //标注样式等属性
                labelSource.DefaultLabelProperties.Visibility.Enabled = true;
                labelSource.DefaultLabelProperties.Visibility.VisibleRangeEnabled = true;
                labelSource.DefaultLabelProperties.Visibility.VisibleRange = new VisibleRange(0.01, 10, MapInfo.Geometry.DistanceUnit.Mile);
                labelSource.DefaultLabelProperties.Visibility.AllowDuplicates = true;
                labelSource.DefaultLabelProperties.Visibility.AllowOverlap = true;
                labelSource.DefaultLabelProperties.Visibility.AllowOutOfView = true;
                labelSource.Maximum = 50;
                //source.DefaultLabelProperties.Layout.UseRelativeOrientation = true;
                //source.DefaultLabelProperties.Layout.RelativeOrientation = MapInfo.Text.RelativeOrientation.FollowPath;
                //source.DefaultLabelProperties.Layout.Angle = 33.0;
                //source.DefaultLabelProperties.Priority.Major = "index";
                //source.DefaultLabelProperties.Layout.Offset = 7;
                //source.DefaultLabelProperties.Layout.Alignment = MapInfo.Text.Alignment.BottomRight;
                //Font font = new Font("黑体", 10);
                //font.ForeColor = System.Drawing.Color.DarkBlue;
                //source.DefaultLabelProperties.Style.Font = font;
            }
           
            /// <summary>
            /// 向图层中添加点
            /// Design by Glacier
            /// 2008年8月6日
            /// <param name="tempLayerTableName">表名</param>
            /// <param name="tempLayerName">图层名</param>
            /// <param name="dPoint">点坐标</param>
            /// </summary>
            public void AddPointToLayer(string tempLayerTableName, string tempLayerName, DPoint dPoint)
            {

                EditAppoint appoint = new EditAppoint();
                if (appoint.ShowDialog() == DialogResult.OK)
                {
                    MapInfo.Mapping.Map myMap = MapInfo.Engine.Session.Current.MapFactory[ControlMap.Map.Alias];
                    //获取图层和表
                    FeatureLayer workLayer = (MapInfo.Mapping.FeatureLayer)myMap.Layers[tempLayerName];
                    MapInfo.Data.Table tblTemp = MapInfo.Engine.Session.Current.Catalog.GetTable(tempLayerTableName);
                    //创建点图元及其样式
                    FeatureGeometry pgPoint = new MapInfo.Geometry.Point(workLayer.CoordSys, dPoint);
                    MapInfo.Styles.SimpleVectorPointStyle spsPoint = new MapInfo.Styles.SimpleVectorPointStyle(37, System.Drawing.Color.Red, 20);
                    MapInfo.Styles.CompositeStyle csPoint = new MapInfo.Styles.CompositeStyle(spsPoint);
                    MapInfo.Data.Feature ptPoint = new MapInfo.Data.Feature(tblTemp.TableInfo.Columns);
                    ptPoint.Geometry = pgPoint;
                    ptPoint.Style = csPoint;
                    ptPoint["index"] = appoint.ID;
                    ptPoint["name"] = appoint.Name;
                    //将点图元加入图层
                    workLayer.Table.InsertFeature(ptPoint);
                }
            }
            /// <summary>
            /// 向图层中添加线段
            /// Design by Glacier
            /// 2008年8月6日
            /// <param name="tempLayerTableName">表名</param>
            /// <param name="tempLayerName">图层名</param>
            /// <param name="startPoint">线段起点坐标</param>
            /// <param name="endPoint">线段终点坐标</param>
            /// </summary>
            public void AddLineToLayer(string tempLayerTableName, string tempLayerName, DPoint startPoint, DPoint endPoint)
            {
                EditAppoint appoint = new EditAppoint();
                if (appoint.ShowDialog() == DialogResult.OK)
                {
                    MapInfo.Mapping.Map myMap = MapInfo.Engine.Session.Current.MapFactory[ControlMap.Map.Alias];
                    //获取图层和表
                    FeatureLayer workLayer = (MapInfo.Mapping.FeatureLayer)myMap.Layers[tempLayerName];
                    MapInfo.Data.Table tblTemp = MapInfo.Engine.Session.Current.Catalog.GetTable(tempLayerTableName);
                    //创建线图元及其样式
                    FeatureGeometry pgLine = MultiCurve.CreateLine(workLayer.CoordSys, startPoint, endPoint);
                    MapInfo.Styles.SimpleLineStyle slsLine = new MapInfo.Styles.SimpleLineStyle(new LineWidth(3, LineWidthUnit.Pixel), 2, System.Drawing.Color.OrangeRed);
                    MapInfo.Styles.CompositeStyle csLine = new MapInfo.Styles.CompositeStyle(slsLine);
                    MapInfo.Data.Feature ptLine = new MapInfo.Data.Feature(tblTemp.TableInfo.Columns);
                    ptLine.Geometry = pgLine;
                    ptLine.Style = csLine;
                    ptLine["index"] = appoint.ID;
                    ptLine["name"] = appoint.Name;
                    //将线图元加入图层
                    workLayer.Table.InsertFeature(ptLine);
                }
            }
            /// <summary>
            /// 向图层中添加多个点
            /// 2008年8月6日
            /// <param name="tempLayerTableName">表名</param>
            /// <param name="tempLayerName">图层名</param>
            /// <param name="dPoint">点坐标数组</param>
            /// </summary>
            public void AddMultiPoint(string tempLayerTableName, string tempLayerName, DPoint[] dPoints)//MultiPoint 包含了无序和不连续的 Point 集且可用于在多个点上执行多个操作。其中 pointArray 是 DPoints 的数组。
            {
                CreateTempLayer(tempLayerName, tempLayerName);
                MapInfo.Mapping.Map myMap = MapInfo.Engine.Session.Current.MapFactory[ControlMap.Map.Alias];
                //获取图层和表
                FeatureLayer workLayer = (MapInfo.Mapping.FeatureLayer)myMap.Layers[tempLayerName];
                MapInfo.Data.Table tblTemp = MapInfo.Engine.Session.Current.Catalog.GetTable(tempLayerTableName);
                //创建点图元及其样式
                //MultiPoint multiPointGeometry = new MultiPoint(longLatNad83, pointArray);
                FeatureGeometry pgPoint = new MapInfo.Geometry.MultiPoint(workLayer.CoordSys, dPoints);
               // FeatureGeometry pgPoint = new MapInfo.Geometry.Point(workLayer.CoordSys, dPoint);
                MapInfo.Styles.SimpleVectorPointStyle spsPoint = new MapInfo.Styles.SimpleVectorPointStyle(37, System.Drawing.Color.Red, 20);
                MapInfo.Styles.CompositeStyle csPoint = new MapInfo.Styles.CompositeStyle(spsPoint);
                MapInfo.Data.Feature ptPoint = new MapInfo.Data.Feature(tblTemp.TableInfo.Columns);
                ptPoint.Geometry = pgPoint;
                ptPoint.Style = csPoint;
                ptPoint["index"] = "1";
                ptPoint["name"] = "gg";
                //将点图元加入图层
                workLayer.Table.InsertFeature(ptPoint);

                
            }
            /// <summary>
            /// LineString 是以线性方式连接的连续点的有方向集合。LineString 中任意两个连续点都由直线连接
            /// </summary>
            /// <param name="tempLayerTableName">临时表名</param>
            /// <param name="tempLayerName">临时图层名</param>
            /// <param name="dPoints">点数组</param>
            public void AddLineString(string tempLayerTableName, string tempLayerName, DPoint[] dPoints)
            {
                //折线
                CreateTempLayer(tempLayerTableName, tempLayerName);
                Catalog Cat = MapInfo.Engine.Session.Current.Catalog;

                Table tblTemp = Cat.GetTable(tempLayerTableName);

                MapInfo.Geometry.DPoint[] point = new DPoint[3];

                tblTemp.BeginAccess(TableAccessMode.Write);
                Feature ftr = new Feature(tblTemp.TableInfo.Columns);
                CoordSys coordSys = this.ControlMap.Map.GetDisplayCoordSys();

                point[0] = new DPoint(Convert.ToDouble("103"), Convert.ToDouble("36"));
                point[1] = new DPoint(Convert.ToDouble("104"), Convert.ToDouble("43"));
                point[2] = new DPoint(107.22751833, 33.127);

                MapInfo.Geometry.CurveSegment seg = new MapInfo.Geometry.LineString(coordSys, dPoints);

                FeatureGeometry geometry = new MapInfo.Geometry.MultiCurve(coordSys, seg.CurveSegmentType, dPoints);

                ftr.Geometry = geometry;

                //ftr["LineId"] = flag;

                tblTemp.InsertFeature(ftr);
                tblTemp.EndAccess();

            }
            /// <summary>
            /// 添加矩形
            /// </summary>
            /// <param name="tempLayerTableName">临时表名</param>
            /// <param name="tempLayerName">临时图层名</param>
            /// <param name="dPoints">点数组</param>
            public void AddRectangle(string tempLayerTableName, string tempLayerName, DPoint[] dPoints)
            {
               
                CreateTempLayer(tempLayerTableName, tempLayerName);
                Catalog Cat = MapInfo.Engine.Session.Current.Catalog;

                Table tblTemp = Cat.GetTable(tempLayerTableName);   

                tblTemp.BeginAccess(TableAccessMode.Write);
                Feature ftr = new Feature(tblTemp.TableInfo.Columns);
                CoordSys coordSys = this.ControlMap.Map.GetDisplayCoordSys();

                MapInfo.Geometry.CurveSegment seg = new MapInfo.Geometry.LineString(coordSys, dPoints);
                MapInfo.Geometry.MultiPolygon mulp = new MultiPolygon(coordSys, seg.CurveSegmentType, dPoints);

                ftr.Geometry = mulp;

                //ftr["LineId"] = flag;

                tblTemp.InsertFeature(ftr);
                tblTemp.EndAccess();

               
            }
            /// <summary>
            /// 添加圆角矩形
            /// </summary>
            /// <param name="tempLayerTableName">临时表名</param>
            /// <param name="tempLayerName">临时图层名</param>
            /// <param name="x1">坐标</param>
            /// <param name="y1">坐标</param>
            /// <param name="x2">坐标</param>
            /// <param name="y2">坐标</param>
            /// <param name="radius">转交半径20</param>
            public void AddRoundedRectangle(string tempLayerTableName, string tempLayerName, double x1,double y1,double x2,double y2,double radius)
            {
               
                CreateTempLayer(tempLayerTableName, tempLayerName);
                Catalog Cat = MapInfo.Engine.Session.Current.Catalog;

                Table tblTemp = Cat.GetTable(tempLayerTableName);

                tblTemp.BeginAccess(TableAccessMode.Write);
                Feature ftr = new Feature(tblTemp.TableInfo.Columns);
                CoordSys coordSys = this.ControlMap.Map.GetDisplayCoordSys();

                
                //创建线图元及其样式

                DRect rect = new DRect(x1, y1, x2, y2);
                
                DistanceUnit unit = DistanceUnit.Mile;
                DistanceType type = DistanceType.Spherical;
                RoundedRectangle roundedRectangle = new RoundedRectangle(coordSys, rect, radius, unit, type);
               
                ftr.Geometry = roundedRectangle;

                //ftr["LineId"] = flag;

                tblTemp.InsertFeature(ftr);
                tblTemp.EndAccess();

            }
            /// <summary>
            /// 添加椭圆形
            /// </summary>
            /// <param name="tempLayerTableName">临时表名</param>
            /// <param name="tempLayerName">临时图层名</param>
            /// <param name="x1">中心点</param>
            /// <param name="y1">中心点</param>
            /// <param name="xRadius">x轴半径</param>
            /// <param name="yRadius">Y轴半径</param>
            public void AddEllipse(string tempLayerTableName, string tempLayerName, double x1, double y1, double xRadius, double yRadius)
            {
                CreateTempLayer(tempLayerTableName, tempLayerName);
                Catalog Cat = MapInfo.Engine.Session.Current.Catalog;

                Table tblTemp = Cat.GetTable(tempLayerTableName);

                tblTemp.BeginAccess(TableAccessMode.Write);
                Feature ftr = new Feature(tblTemp.TableInfo.Columns);
                CoordSys coordSys = this.ControlMap.Map.GetDisplayCoordSys();


                //创建线图元及其样式

                DPoint center = new DPoint(x1, y1);
                //double xRadius = 100;
                //double yRadius = 135;
                DistanceUnit unit = DistanceUnit.Mile;
                Ellipse ellipse = new Ellipse(coordSys, center, xRadius, yRadius, unit, DistanceType.Spherical);

                ftr.Geometry = ellipse;

                //ftr["LineId"] = flag;

                tblTemp.InsertFeature(ftr);
                tblTemp.EndAccess();
                
              
            }
            
            /// <summary>
            /// 添加扇形图元
            /// </summary>
            /// <param name="x">中心点的坐标</param>
            /// <param name="y">中心点的坐标</param>
            /// <param name="middle">中线</param>
            /// <param name="angle">角度</param>
            /// <param name="radius">radius是半径</param>
            /// <returns>返回构造好的扇形</returns>
            public MapInfo.Geometry.Geometry DrawSector(double x, double y, int middle, int angle, double radius)
            {
                if ((angle == 0) || (radius == 0))
                    return null;
                MapInfo.Geometry.DPoint center = new MapInfo.Geometry.DPoint(x, y);
                //创建一段弧线
                double beginAngle, endAngle;
                if (middle < 90)
                {
                    beginAngle = 90 - middle - angle / 2;
                    endAngle = 90 - middle + angle / 2;
                }
                else if (middle == 90)
                {
                    beginAngle = 360 - angle / 2;
                    endAngle = angle / 2;
                }
                else if (middle == 360)
                {
                    beginAngle = 0;
                    endAngle = 360;
                }
                else
                {
                    beginAngle = 450 - middle - angle / 2;
                    endAngle = 450 - middle + angle / 2;
                }
                CoordSys coordSys = this.ControlMap.Map.GetDisplayCoordSys();
                MapInfo.Geometry.LegacyArc sector = new LegacyArc(coordSys, center, radius, radius,
                MapInfo.Geometry.DistanceUnit.Kilometer, MapInfo.Geometry.DistanceType.Spherical, beginAngle, endAngle);

                MultiCurve mc = sector.CreateMultiCurve(100);

                MapInfo.Geometry.DPoint[] tmpPoints = mc[0][0].SamplePoints();

                MapInfo.Geometry.DPoint[] dPoints = new MapInfo.Geometry.DPoint[3];
                dPoints[0] = mc[0].EndPoint;
                dPoints[1] = new MapInfo.Geometry.DPoint(x, y);
                dPoints[2] = mc[0].StartPoint;

                MapInfo.Geometry.DPoint[] mPoints = new MapInfo.Geometry.DPoint[tmpPoints.Length - 1 + 3];
                for (int i = 0, j = 0; i < tmpPoints.Length - 1 + 3; i++)
                {
                    if (i < tmpPoints.Length - 1)
                        mPoints[i] = tmpPoints[i];
                    else
                        mPoints[i] = dPoints[j++];
                }

                MapInfo.Geometry.MultiPolygon mp = new MultiPolygon(coordSys, CurveSegmentType.Linear, mPoints);
                mp.EditingComplete();

                CreateTempLayer("Sector", "Sector");
                Catalog Cat = MapInfo.Engine.Session.Current.Catalog;

                Table tblTemp = Cat.GetTable("Sector");

                tblTemp.BeginAccess(TableAccessMode.Write);
                Feature ftr = new Feature(tblTemp.TableInfo.Columns);

                ftr.Geometry = mp;

                //ftr["LineId"] = flag;

                tblTemp.InsertFeature(ftr);
                tblTemp.EndAccess();
                return mp;
      
            }
            
            
            
            
            /// <summary>
            ///  重点应用,获取图元的所有图层名称
            /// </summary>
            /// <returns>返回List类型的字符列表</returns>
            public List<string> GetDefaultSelectLayerName()//获取当前选中的图元的所有图层名称
            {
                MapLayerEnumerator enumer = MapMainControl.ControlMap.Map.Layers.GetMapLayerEnumerator();//得到所有图层枚举
                List<string> ls = new List<string>();


                while (enumer.MoveNext())
                {

                    if (MapMainControl.ControlMap.Map.Layers[enumer.Current.Alias].GetType().ToString() == "MapInfo.Mapping.FeatureLayer")//判断是否为图元图层
                    {
                        ls.Add(enumer.Current.Name);

                    }


                }
                return ls;
            }
            /// <summary>
            /// 创建动态轨迹图层
            /// kongliang
            /// 2008年8月7日
            /// <param name="trackLayerTableName">图层表名</param>
            /// <param name="trackLayerName">图层名</param>
            /// <param name="firstPoint">点初始坐标</param>
            /// </summary>
            protected void CreateTrackLayer(string trackLayerTableName, string trackLayerName, DPoint firstPoint)
            {
                MapInfo.Mapping.Map myMap = MapInfo.Engine.Session.Current.MapFactory[ControlMap.Map.Alias];

                //创建临时图层
                MapInfo.Data.TableInfoMemTable tblInfoTemp = new MapInfo.Data.TableInfoMemTable(trackLayerTableName);
                MapInfo.Data.Table tblTemp = MapInfo.Engine.Session.Current.Catalog.GetTable(trackLayerTableName);
                if (tblTemp != null)
                {
                    MapInfo.Engine.Session.Current.Catalog.CloseTable(trackLayerTableName);
                }

                tblInfoTemp.Columns.Add(MapInfo.Data.ColumnFactory.CreateFeatureGeometryColumn(myMap.GetDisplayCoordSys()));
                tblInfoTemp.Columns.Add(MapInfo.Data.ColumnFactory.CreateStyleColumn());
                tblTemp = MapInfo.Engine.Session.Current.Catalog.CreateTable(tblInfoTemp);
                string AnimationLayerName = "test";

                FeatureLayer workLayer = new FeatureLayer(tblTemp, AnimationLayerName, AnimationLayerName);
                myMap.Layers.Add(workLayer);

                //向临时图层中添加初始点
                FeatureGeometry pfg = new MapInfo.Geometry.Point(workLayer.CoordSys, firstPoint.x, firstPoint.y) as FeatureGeometry;
                MapInfo.Styles.CompositeStyle cstyle = new MapInfo.Styles.CompositeStyle(new MapInfo.Styles.SimpleVectorPointStyle(52, System.Drawing.Color.Blue, 30));

                MapInfo.Data.Feature pft = new MapInfo.Data.Feature(tblTemp.TableInfo.Columns);
                pft.Geometry = pfg;
                pft.Style = cstyle;
                workLayer.Table.InsertFeature(pft);
            }

            /// <summary>
            /// 把删除原有点并向图层中添加新点以实现动态轨迹
            /// Glacier
            /// 2008年8月7日
            /// <param name="trackLayerTableName">图层表名</param>
            /// <param name="newPoint">点的新坐标</param>
            /// </summary>
            protected void UpdateTrack(string trackLayerTableName, DPoint newPoint)
            {
                MapInfo.Data.Table altb = MapInfo.Engine.Session.Current.Catalog.GetTable(trackLayerTableName);
                if (altb == null)
                {
                    return;
                }

                //Delete the existed feature and create a new one.
                SearchInfo si = MapInfo.Data.SearchInfoFactory.SearchWhere("");
                Feature dftr = MapInfo.Engine.Session.Current.Catalog.SearchForFeature(altb, si);
                if (dftr == null)
                {
                    return;
                }
                altb.DeleteFeature(dftr);
                MapInfo.Mapping.Map myMap = MapInfo.Engine.Session.Current.MapFactory[ControlMap.Map.Alias];
                FeatureGeometry pfg = new MapInfo.Geometry.Point(myMap.GetDisplayCoordSys(), new DPoint(newPoint.x, newPoint.y)) as FeatureGeometry;
                MapInfo.Styles.CompositeStyle cstyle = new MapInfo.Styles.CompositeStyle(new MapInfo.Styles.SimpleVectorPointStyle(52, System.Drawing.Color.Blue, 30));

                MapInfo.Data.Feature pft = new MapInfo.Data.Feature(altb.TableInfo.Columns);
                pft.Geometry = pfg;
                pft.Style = cstyle;
                altb.InsertFeature(pft);
            }


            public void CreateTempLayer(string tempLayerTableName, string tempLayerName)
            {

                MapInfo.Mapping.Map myMap = MapInfo.Engine.Session.Current.MapFactory[ControlMap.Map.Alias];
                //指定表名建立表信息
                MapInfo.Data.TableInfoMemTable tblInfoTemp = new MapInfo.Data.TableInfoMemTable(tempLayerTableName);
                //确保当前目录下不存在同名表
                MapInfo.Data.Table tblTemp = MapInfo.Engine.Session.Current.Catalog.GetTable(tempLayerTableName);
                if (tblTemp != null)
                {
                    MapInfo.Engine.Session.Current.Catalog.CloseTable(tempLayerTableName);
                }
                //向表信息中添加可绘图列
                tblInfoTemp.Columns.Add(MapInfo.Data.ColumnFactory.CreateFeatureGeometryColumn(myMap.GetDisplayCoordSys()));
                tblInfoTemp.Columns.Add(MapInfo.Data.ColumnFactory.CreateStyleColumn());
                //向表信息中添加自定义列
                tblInfoTemp.Columns.Add(MapInfo.Data.ColumnFactory.CreateIntColumn("index"));
                tblInfoTemp.Columns.Add(MapInfo.Data.ColumnFactory.CreateStringColumn("name", 10));
                //根据表信息创建临时表
                tblTemp = MapInfo.Engine.Session.Current.Catalog.CreateTable(tblInfoTemp);
                //指定表,图层名和图层别名创建临时图层
                FeatureLayer tempLayer = new FeatureLayer(tblTemp, tempLayerName, tempLayerName);
                myMap.Layers.Add(tempLayer);
            }
            public DPoint[] GetFeatureRing(string TableName, string Express)
            {
                MapInfo.Data.Table table = null;
                MapInfo.Geometry.DPoint[] d=null;
                table = MapInfo.Engine.Session.Current.Catalog.GetTable("面地区界");
                if (table != null)
                {
                    MapInfo.Data.SearchInfo si = MapInfo.Data.SearchInfoFactory.SearchWhere("NAME = '兰州市'");
                    MapInfo.Data.IResultSetFeatureCollection irfc = MapInfo.Engine.Session.Current.Catalog.Search(table, si);
                    Feature ftr = irfc[0];
                    MapInfo.Geometry.MultiPolygon mPoly = (MapInfo.Geometry.MultiPolygon)ftr.Geometry;
                    
                    MapInfo.Geometry.Polygon poly = (MapInfo.Geometry.Polygon)mPoly[0];
                    MapInfo.Geometry.Ring r = poly.Exterior;
                    d = r.SamplePoints(22116, DistanceUnit.Kilometer, DistanceType.Spherical);
                    
                }
                return d;
            }

                 
        }
    }

  • 相关阅读:
    20179311《网络攻防实践》第八周作业
    20179311《网络攻防实践》第七周作业
    20179311《网络攻防实践》第六周作业
    20179311《网络攻防实践》第五周作业
    20179311《网络攻防实践》第四周作业
    20179311《网络攻防实践》第三周作业
    20179311《网络攻防实践》第二周作业
    python的 Function Annotations学习笔记
    测试如何快速了解一个产品、需求、任务(海盗派测试分析)
    基于Jmeter和Jenkins搭建性能测试框架
  • 原文地址:https://www.cnblogs.com/googlegis/p/2978846.html
Copyright © 2011-2022 走看看