首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# NetTopologySuite M值

C# NetTopologySuite M值
EN

Stack Overflow用户
提问于 2018-12-13 23:03:09
回答 1查看 1K关注 0票数 1

我正在使用NetTopologySuite作为SqlGeometries的.net核心替代品。它似乎不支持点或坐标中的M值,尽管它有M个属性。例如这段简单的代码:

代码语言:javascript
复制
using NetTopologySuite.Geometries;
using System.Diagnostics;

namespace PlaygroundCore
{
    class Program
    {
        static void Main(string[] args)
        {
            var p3 = new Point(1, 2, 3);
            p3.Y = 8;
            p3.M = 1;
            var m = p3.M;

            Debug.WriteLine(p3);
            Debug.WriteLine(p3.M);
            Debug.WriteLine(m);
        }
    }
}

输出

代码语言:javascript
复制
POINT (1 8 3)
NaN
NaN

M值似乎完全被拒绝了。这是实现中的一个bug吗?有没有办法用M值创建点/坐标/线串?

EN

回答 1

Stack Overflow用户

发布于 2018-12-14 00:28:45

默认坐标序列是CoordinateArraySequence,它当前不支持M值,但看起来DotSpatialAffineCoordinateSequence确实支持M值。要使M值正常工作,我必须执行以下操作

代码语言:javascript
复制
using NetTopologySuite.Geometries;
using NetTopologySuite.Geometries.Implementation;
using System.Diagnostics;

namespace NetTopologyTest
{
    class Program
    {
        static void Main(string[] args)
        {
            //This sequence has to be initialized with ordinates XYZM. If you construct it
            //with just XYZ values, then you can't add M values to it later.
            var coordinateSequence = new DotSpatialAffineCoordinateSequence(new[] { 1.0, 2.0 }, new[] { 3.0 }, new[] { 4.0 });
            var sequenceFactory = new DotSpatialAffineCoordinateSequenceFactory(GeoAPI.Geometries.Ordinates.XYZM);
            var geometryFactory = new GeometryFactory(sequenceFactory);
            var p3 = new Point(coordinateSequence, geometryFactory);
            p3.Y = 8;
            p3.M = 1;
            var m = p3.M;

            Debug.WriteLine(p3);
            Debug.WriteLine(p3.M);
            Debug.WriteLine(m);
        }
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53764688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档