是否可以通过GeoJSON4STJ将Nettopologysuite几何体序列化为GeoJSON



Hi我一直在尝试使用GeoJSON4STJ for Nettopologysuite将多边形序列化为变量。到目前为止,反序列化工作正常,但我无法序列化它。有什么方法可以做到这一点吗?

我已经根据需要将以下代码添加到启动文件

public void ConfigureServices(IServiceCollection services) {
services.AddControllers()
.AddJsonOptions(options => {
options.JsonSerializerOptions.Converters.Add(new NetTopologySuite.IO.Converters.GeoJsonConverterFactory());
});
}

我正在尝试使用以下林

geoStr = JsonSerializer.Serialize(geometry);

已经有一段时间了,但由于人们仍然感兴趣,使用GeoJSON4STJ需要为System.Text.Json设置JsonSerializerOptions。这对于序列化和反序列化都是必需的。

示例:

using Microsoft.AspNetCore.Mvc;
_jsonOptions = new JsonOptions();
_jsonOptions.JsonSerializerOptions.Converters.Add(new NetTopologySuite.IO.Converters.GeoJsonConverterFactory());
var gf = NetTopologySuite.NtsGeometryServices.Instance.CreateGeometryFactory(4326);
// Create a polygon from Aurich over Emden, Leer to Aurich
Geometry geometry = gf.CreatePolygon(new[] {
new NetTopologySuite.Geometries.Coordinate(7.5404, 53.4837),
new NetTopologySuite.Geometries.Coordinate(7.1559, 53.3646),
new NetTopologySuite.Geometries.Coordinate(7.4550, 53.2476),
new NetTopologySuite.Geometries.Coordinate(7.5404, 53.4837),
});
var str = JsonSerializer.Serialize(geometry, _jsonOptions.JsonSerializerOptions);
Console.WriteLine(str);     

如果您不特别需要NetTopologySuite.IO.GeoJSON4STJ或System.Text.Json和NetTopologySuite.IO.GeoJSON,@shage_in_excelsior的答案会很好地为您服务。

我知道这个问题已经过时了,这个答案与你的要求不太匹配,但我认为这可能会使你对GeoJSON4STJ的具体要求变得不必要。

您可以使用"NetTopologySuite.IO"将NetTopologySuiteGeometry直接转换为GeoJSON,如下所示:

using NetTopologySuite.IO;

var geometryData = <Your NetTopologySuite Geometry data>;
GeoJsonWriter _geoJsonWriter = new GeoJsonWriter();
var str = _geoJsonWriter.Write(geometryData);

这将非常简单地避开您对GeoJSON4STJ进行工作的需求。

希望这能帮助到别人。

相关内容

  • 没有找到相关文章

最新更新