【问题标题】:Why NetTopologySuite v2.0 does not implement GeoAPI?为什么 NetTopologySuite v2.0 没有实现 GeoAPI?
【发布时间】:2020-01-06 03:36:50
【问题描述】:

Net Topology Suite 2.0 版发生了什么变化?我的主要考虑是:

  • 它不再实现 Geo API(我喜欢它的想法)
  • ICoordinateSystem 接口在哪里(如何使用 NTS 将几何图形从一个坐标系转换到另一个坐标系)?

【问题讨论】:

  • GeoApi IGeometry 和 NTS.IO.GeoJson Geometry 面临同样的问题。我认为您的第一个考虑大部分是正确的(因为这是主要版本更新)。所以目前我正在使用旧版本,直到我有时间进一步研究这个问题。

标签: nettopologysuite


【解决方案1】:

在 NetTopologySuite 问题中检查此问题。你可以投影。 https://github.com/NetTopologySuite/NetTopologySuite/issues/346

添加到空气呼吸器的注释/代码中,您需要将 ICoordinateSystemServices 更改为 CoordinateSystemServices 并且 SRID 4326 和 3857 尚未预定义。

/*
static readonly ICoordinateSystemServices _coordinateSystemServices = new CoordinateSystemServices(
    new CoordinateSystemFactory(), new CoordinateTransformationFactory(),
    new Dictionary<int, string>
 */
static readonly CoordinateSystemServices _coordinateSystemServices = new CoordinateSystemServices(
    new CoordinateSystemFactory(), new CoordinateTransformationFactory(),
    new Dictionary<int, string>
{
    [4326] = @"
    GEOGCS[""WGS 84"",
        DATUM[""WGS_1984"",
            SPHEROID[""WGS 84"", 6378137, 298.257223563,
                AUTHORITY[""EPSG"", ""7030""]],
            AUTHORITY[""EPSG"", ""6326""]],
        PRIMEM[""Greenwich"", 0,
        AUTHORITY[""EPSG"", ""8901""]],
        UNIT[""degree"", 0.0174532925199433,
            AUTHORITY[""EPSG"", ""9122""]],
        AUTHORITY[""EPSG"", ""4326""]]
    ",
//(additional projections....)

""
}

        public static Geometry ProjectTo(this Geometry geometry, int srid)
        {
            var transformation = _coordinateSystemServices.CreateTransformation(geometry.SRID, srid);
            return Transform(geometry, transformation.MathTransform);
        }

【讨论】:

    【解决方案2】:

    Net Topology Suite 2.0 版发生了什么变化?

    对于大多数听起来像这样的问题,您可以将大部分责任归咎于我。

    一般而言,请参阅 https://github.com/NetTopologySuite/NetTopologySuite/wiki/Upgrading-to-2.0-from-1.x 了解 NetTopologySuite 2.0 中发生的变化的详细信息,包括如何从旧内容迁移到新内容以及简要简要说明我们为何推动导致如此的更改很痛苦。


    • 它不再实现 Geo API(我喜欢它的想法)

    我们就这个话题进行了很多讨论:https://github.com/NetTopologySuite/GeoAPI/issues/70

    简短版:听起来将这个单独的 GeoAPI 项目作为几何材料的抽象是个好主意,但在我们拥有它的 10 年中,它变成了显然没有人实际上将它作为独立于 NTS 的独立事物使用。

    这给我们带来了很多摩擦,让新用户感到困惑,最终 NTS 本身已经是几何学东西的抽象,所以我主张我们在我们已经制作的同时摆脱它v2 的其他重大更改。


    ICoordinateSystem 接口在哪里(如何使用 NTS 将几何从一个坐标系转换到另一个坐标系)?

    这些东西是由ProjNet4GeoAPI 实现的。由于我们停止维护我们用来调用 GeoAPI 的东西,我们开始在“ProjNet”包下发布它,在迁移到 v2 时该包有类似的变化。

    坐标系的抽象现在是抽象类ProjNet.CoordinateSystems.CoordinateSystem


    与上述两者非常非常相关的是我努力推动的另一个,我们最终在 v2 过渡中实现了:https://github.com/NetTopologySuite/GeoAPI/issues/68

    【讨论】:

      猜你喜欢
      • 2012-04-29
      • 2017-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多