在golang中解析GeoJson数据

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

Parsing GeoJson data in golang

问题

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

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

我这样打开文件:

  1. jsonFile, err := os.Open("filename.json")
  2. if err != nil {
  3. return nil, err
  4. }
  5. defer jsonFile.Close()
  6. data, err := ioutil.ReadAll(jsonFile)
  7. if err != nil {
  8. return nil, err
  9. }

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

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

但它只返回一个单独的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:

  1. jsonFile, err := os.Open("filename.json")
  2. if err != nil {
  3. return nil, err
  4. }
  5. defer jsonFile.Close()
  6. data, err := ioutil.ReadAll(jsonFile)
  7. if err != nil {
  8. return nil, err
  9. }

And then I parse the file using this:

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

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

Can someone help me with this

答案1

得分: 1

问题解决

// 打开 JSON 文件

  1. jsonFile, err := os.Open(filename)
  2. if err != nil {
  3. return nil, err
  4. }
  5. defer jsonFile.Close()

// 读取文件

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

// 解析为单个 geojson.Object

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

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

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

Problem solved

// open json file

  1. jsonFile, err := os.Open(filename)
  2. if err != nil {
  3. return nil, err
  4. }
  5. defer jsonFile.Close()

// read the file

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

// parse into a single geojson.Object

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

// typecast geojson.Object into geojson.FeatureCollection

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

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:

确定