首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NetTopologySuite.Core 1.15.3和距离单位

NetTopologySuite.Core 1.15.3和距离单位
EN

Stack Overflow用户
提问于 2019-12-24 00:47:49
回答 1查看 431关注 0票数 0

我想把距离的笛卡尔坐标“转换”成米。

我添加了

我尝试使用以下代码:

代码语言:javascript
运行
复制
        return new PagedList<Dto.DrugConsortium.CollectionSiteWithCoordinatesDto>(query.Select(p =>
            new Dto.DrugConsortium.CollectionSiteWithCoordinatesDto { CollectionSite = p, Distance = p.Location.ProjectTo(2855).Distance(myLocation) }).ToList(), pageIndex, pageSize);

我的扩展名在哪里:

代码语言:javascript
运行
复制
public static class GeometryExtensions
{
    static readonly IGeometryServices _geometryServices = NtsGeometryServices.Instance;
    static readonly ICoordinateSystemServices _coordinateSystemServices
        = new CoordinateSystemServices(
            new CoordinateSystemFactory(),
            new CoordinateTransformationFactory(),
            new Dictionary<int, string>
            {
            // Coordinate systems:

            // (3857 and 4326 included automatically)

            // This coordinate system covers the area of our data.
            // Different data requires a different coordinate system.
            [2855] =
                @"
                PROJCS[""NAD83(HARN) / Washington North"",
                    GEOGCS[""NAD83(HARN)"",
                        DATUM[""NAD83_High_Accuracy_Regional_Network"",
                            SPHEROID[""GRS 1980"",6378137,298.257222101,
                                AUTHORITY[""EPSG"",""7019""]],
                            AUTHORITY[""EPSG"",""6152""]],
                        PRIMEM[""Greenwich"",0,
                            AUTHORITY[""EPSG"",""8901""]],
                        UNIT[""degree"",0.01745329251994328,
                            AUTHORITY[""EPSG"",""9122""]],
                        AUTHORITY[""EPSG"",""4152""]],
                    PROJECTION[""Lambert_Conformal_Conic_2SP""],
                    PARAMETER[""standard_parallel_1"",48.73333333333333],
                    PARAMETER[""standard_parallel_2"",47.5],
                    PARAMETER[""latitude_of_origin"",47],
                    PARAMETER[""central_meridian"",-120.8333333333333],
                    PARAMETER[""false_easting"",500000],
                    PARAMETER[""false_northing"",0],
                    UNIT[""metre"",1,
                        AUTHORITY[""EPSG"",""9001""]],
                    AUTHORITY[""EPSG"",""2855""]]
            "
            });

    public static IGeometry ProjectTo(this IGeometry geometry, int srid)
    {
        var geometryFactory = _geometryServices.CreateGeometryFactory(srid);
        var transformation = _coordinateSystemServices.CreateTransformation(geometry.SRID, srid);

        return GeometryTransform.TransformGeometry(
            geometryFactory,
            geometry,
            transformation.MathTransform);
    }
}

添加了ProjNet4GeoAPI nuget包(版本1.4.1)

但我无法解析GeometryTransform类,找不到它。

如何解决?

EN

回答 1

Stack Overflow用户

发布于 2020-09-21 22:46:21

NetTopologySuite.CoordinateSystems.Transformations命名空间下的First GeometryTransform.TransformGeometry()方法。你有没有

“使用NetTopologySuite.CoordinateSystems.Transformations;”

在你的扩展方法的顶部?

第二个,我要补充的是,2855是NorthWest华盛顿州的坐标系。我会检查一下您使用的坐标是否在该区域内。

此外,每个坐标系都有自己的测量单位。例如,SRID:4326表示几何图形的度数(笛卡尔坐标),表示地理类型的米数。

SRID:2855以英尺为单位

您可以查看此站点以获取可用坐标系的列表。https://epsg.io/

我对地理类型和转换是新的,但在我的搜索中,这是我发现的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59458728

复制
相关文章

相似问题

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