featureclass(面要素) 转 json/geojson,当featureclass的feature(大约1W以上)太多时,报内存错误,但gp工具成功
环境 arcgis10.2,vs2015
if (featureClass == null) return @"featureClass is null";
IJSONWriter jsonWriter = new JSONWriterClass();
jsonWriter.WriteToString();
//Create a property set to specify format to be GeoJSON
//IPropertySet props = new PropertySetClass();
//props.SetProperty("Format", "GeoJSON");
IJSONSerializer jsonSerializer = new JSONSerializerGdbClass();
jsonSerializer.InitSerializer(jsonWriter, null);
IRecordSetInit recordSetInit = new RecordSetClass();
recordSetInit.SetSourceTable((ITable)featureClass, null);
IRecordSet recordSet = recordSetInit as IRecordSet;
//var sr = ((IGeoDataset)featureClass).SpatialReference;
int count;
(jsonSerializer as IExternalSerializerGdb2).WriteRecordSetEx(null, recordSet, null, out count);
var json = Encoding.UTF8.GetString(jsonWriter.GetStringBuffer());
return json;
if (featureClass == null) return @"featureClass is null";
IJSONWriter jsonWriter = new JSONWriterClass();
jsonWriter.WriteToString();
//Create a property set to specify format to be GeoJSON
//IPropertySet props = new PropertySetClass();
//props.SetProperty("Format", "GeoJSON");
IJSONSerializer jsonSerializer = new JSONSerializerGdbClass();
jsonSerializer.InitSerializer(jsonWriter, null);
IRecordSetInit recordSetInit = new RecordSetClass();
recordSetInit.SetSourceTable((ITable)featureClass, null);
IRecordSet recordSet = recordSetInit as IRecordSet;
//var sr = ((IGeoDataset)featureClass).SpatialReference;
int count;
(jsonSerializer as IExternalSerializerGdb2).WriteRecordSetEx(null, recordSet, null, out count);
var json = Encoding.UTF8.GetString(jsonWriter.GetStringBuffer());
return json;
1 个回复
cannel
赞同来自: 随意的风
建议可以试试用转单个feature的,这样自己可以控制对象释放
这些类我都没用过,只能瞎猜了
要回复问题请先登录或注册