在golang中解析GeoJson数据

huangapple go评论84阅读模式
英文:

Parsing GeoJson data in golang

问题

我想解析一个包含一个国家地区特征集的JSON文件。

我正在使用这个包 https://github.com/tidwall/geojson

我这样打开文件:

jsonFile, err := os.Open("filename.json")
if err != nil {
	return nil, err
}
defer jsonFile.Close()

data, err := ioutil.ReadAll(jsonFile)
if err != nil {
	return nil, err
}

然后我使用以下代码解析文件:

obj, err := geojson.Parse(string(data), geojson.DefaultParseOptions)
if err != nil {
	return nil, err
}

但它只返回一个单独的geojson.Object,而我想要一个特征列表。

有人可以帮我解决这个问题吗?

英文:

I want to parse a JSON file that contains a feature collection of a country's regions.

I am using this package https://github.com/tidwall/geojson

I opened the file like this:

jsonFile, err := os.Open("filename.json")
if err != nil {
	return nil, err
}
defer jsonFile.Close()

data, err := ioutil.ReadAll(jsonFile)
if err != nil {
	return nil, err
}

And then I parse the file using this:

obj, err := geojson.Parse(string(data), geojson.DefaultParseOptions)
if err != nil {
	return nil, err
}

but it returns a single geojson.Object and I want a list of features

Can someone help me with this

答案1

得分: 1

问题解决

// 打开 JSON 文件

jsonFile, err := os.Open(filename)
if err != nil {
	return nil, err
}
defer jsonFile.Close()

// 读取文件

data, err := ioutil.ReadAll(jsonFile)
if err != nil {
	return nil, err
}

// 解析为单个 geojson.Object

obj, err := geojson.Parse(string(data), geojson.DefaultParseOptions)
if err != nil {
	return nil, err
}

// 将 geojson.Object 强制转换为 geojson.FeatureCollection

fc, ok := obj.(*geojson.FeatureCollection)
if !ok {
	return nil, errors.Newf(errors.Internal, nil, "无法转换为要素集合")
}
英文:

Problem solved

// open json file

jsonFile, err := os.Open(filename)
if err != nil {
	return nil, err
}
defer jsonFile.Close()

// read the file

data, err := ioutil.ReadAll(jsonFile)
if err != nil {
	return nil, err
}

// parse into a single geojson.Object

obj, err := geojson.Parse(string(data), geojson.DefaultParseOptions)
if err != nil {
	return nil, err
}

// typecast geojson.Object into geojson.FeatureCollection

fc, ok := obj.(*geojson.FeatureCollection)
if !ok {
	return nil, errors.Newf(errors.Internal, nil, "cannot convert into feature collection")
}

huangapple
  • 本文由 发表于 2022年11月21日 14:03:15
  • 转载请务必保留本文链接:https://go.coder-hub.com/74514829.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定