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"将NetTopologySuite
Geometry
直接转换为GeoJSON,如下所示:
using NetTopologySuite.IO;
var geometryData = <Your NetTopologySuite Geometry data>;
GeoJsonWriter _geoJsonWriter = new GeoJsonWriter();
var str = _geoJsonWriter.Write(geometryData);
这将非常简单地避开您对GeoJSON4STJ
进行工作的需求。
希望这能帮助到别人。