view pkg/wfs/rawfeaturecollection.go @ 5688:6281c18b109f sr-v2

Finsh serializing v2 meshes.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Mon, 12 Feb 2024 02:27:41 +0100
parents 6caf5cd6249e
children
line wrap: on
line source

// This is Free Software under GNU Affero General Public License v >= 3.0
// without warranty, see README.md and license for details.
//
// SPDX-License-Identifier: AGPL-3.0-or-later
// License-Filename: LICENSES/AGPL-3.0.txt
//
// Copyright (C) 2018 by via donau
//   – Österreichische Wasserstraßen-Gesellschaft mbH
// Software engineering by Intevation GmbH
//
// Author(s):
//  * Sascha L. Teichmann <sascha.teichmann@intevation.de>

package wfs

import (
	"encoding/json"
	"io"
)

// RawFeatureCollection is a template for a feature collection
// returned by a WFS server.
type RawFeatureCollection struct {
	CRS *struct {
		Properties struct {
			Name string `json:"name"`
		} `json:"properties"`
	} `json:"crs"`
	Features []*struct {
		Geometry struct {
			Coordinates *json.RawMessage `json:"coordinates"`
			Type        string           `json:"type"`
		} `json:"geometry"`
		Properties *json.RawMessage `json:"properties"`
	} `json:"features"`
}

// ParseRawFeatureCollection turns a io.Reader into raw feature collection.
func ParseRawFeatureCollection(r io.Reader) (*RawFeatureCollection, error) {
	rfc := new(RawFeatureCollection)
	if err := json.NewDecoder(r).Decode(rfc); err != nil {
		return nil, err
	}
	return rfc, nil
}