gdalib

package module
v1.0.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 23, 2024 License: MIT Imports: 14 Imported by: 0

README

gdalib

Go library providing various utils to process common GDAL data.

Documentation

Index

Constants

View Source
const (
	FILE_EXT_SHP    = ".shp"
	FILE_EXT_CPG    = ".cpg"
	FILE_EXT_JSON   = ".json"
	SHAPE_ENCODING  = "UTF-8"
	UTF8_ENC        = "UTF8"
	ZH_ENC          = "GBK"
	SHP_DRIVER_NAME = "ESRI Shapefile"
	ENCODING_OPTION = "ENCODING=" + SHAPE_ENCODING
	OO_ENCODING     = "ENCODING=" + ZH_ENC
	UNIVERSAL_SRID  = 4326
	GEOJSON_SRID    = 4326
	OUTPUT_SRID     = 4490
	WKT_ALG_SRID    = 3857

	ErrColumnMissingTemplate = `shp文件中缺失【%s】字段`
	ErrColumnEmptyTemplate   = `shp文件图斑中【%s】字段为空`

	MergeBufferDistance = 0.005
	MergeBufferMeter    = 0.00001
	MergeBufferSegs     = 24
	CoverageThreshold   = 0.9999

	SimplifyT = 1.0

	SHP_FIELD_UID = "uid"
	SHP_FIELD_OID = "oid"

	TMP_GEOJSON = "geo_%s.json"
)
View Source
const (
	METEO_TIF_X = 6939
	METEO_TIF_Y = 5211
)
View Source
const (
	CutLineBuffDist = 0.005
	BuffPercent     = 0.05
	BuffQuadSegs    = 12
)

Variables

View Source
var (
	ErrGdalDriverCreate    = errors.New("gdal driver create err")
	ErrGdalDriverOpen      = errors.New("gdal driver open err")
	ErrGdalEmptyShp        = errors.New("gdal shp is empty")
	ErrVoidSrid            = errors.New("gdal shp with void srid")
	ErrGdalDriverCount     = errors.New("gdal driver count err")
	ErrGdalWrongGeoType    = errors.New("gdal wrong geo type")
	ErrGdalWrongGeoJSON    = errors.New("gdal wrong GeoJSON")
	ErrWrongPositionedLine = errors.New("wrong positioned line")
	ErrNotEnoughLinePoints = errors.New("not enough line points")
	ErrEmptyCutEdge        = errors.New("cut edge is empty")
	ErrWrongLineEndsCount  = errors.New("wrong line ends count")
	ErrInvalidWKT          = errors.New("invalid WKT")
	ErrWrongBufferSize     = errors.New("wrong buffer size")
	ErrInvalidTif          = errors.New("invalid tif")
	ErrWrongTif            = errors.New("wrong tif")
	ErrEmptyTif            = errors.New("empty tif")
	ErrTifReadFailed       = errors.New("failed to read tif band")
)

Functions

func Convert4326To3857 added in v1.0.4

func Convert4326To3857(lon, lat float64) (lonIn3857, latIn3857 float64)

func LonLatIn3857ToMeteoGridIdx added in v1.0.4

func LonLatIn3857ToMeteoGridIdx(lonIn3857, latIn3857 float64) (idx int32)

func PointsToWkt added in v1.0.3

func PointsToWkt(lon1, lon2, lat1, lat2 float64) string

func SpanIn4326ToMeteoGridIdSpans added in v1.0.5

func SpanIn4326ToMeteoGridIdSpans(span [4]float64) (ids [][2]int32)

func SpanIn4326ToMeteoGridIds added in v1.0.4

func SpanIn4326ToMeteoGridIds(span [4]float64) (ids []int32)

func SpanToWkt added in v1.0.3

func SpanToWkt(span [4]float64) string

Types

type AlignedLabel

type AlignedLabel = map[string]LabelCode

type AnyJson

type AnyJson = json.RawMessage

type GdalGeo

type GdalGeo = []byte

type GdalToolbox

type GdalToolbox struct {
	// contains filtered or unexported fields
}

func NewGdalToolbox

func NewGdalToolbox(tmpDir ...string) *GdalToolbox

初始化GDAL工具箱,tmpDir为可选的临时目录路径(未提供的话为当前目录)

func (*GdalToolbox) CheckWkt

func (g *GdalToolbox) CheckWkt(wkt string, srid int) (err error)

检查WKT有效性

func (*GdalToolbox) CropRasters

func (g *GdalToolbox) CropRasters(tifWkt []ImgMergeFile, extWkt, out string) (err error)

按各自有效区WKT剪切,并按目标区域WKT镶嵌多张影像tif 排序靠后的tif优先显示

func (*GdalToolbox) Cut

func (g *GdalToolbox) Cut(wkt, line string) (out []string, err error)

func (*GdalToolbox) Difference

func (g *GdalToolbox) Difference(gA, gB GdalGeo, srid int) (ret GdalGeo, err error)

求两个WKB矢量面之差

func (*GdalToolbox) EncodingShapefile

func (g *GdalToolbox) EncodingShapefile(shp, cpg string, rmOld bool) (out string, err error)

转换整个shp文件的文本编码

func (*GdalToolbox) GeoJSONToWkb

func (g *GdalToolbox) GeoJSONToWkb(geoJson AnyJson) (ret GdalGeo, err error)

GeoJSON转WKB

func (*GdalToolbox) GetAreaCoverage

func (g *GdalToolbox) GetAreaCoverage(districtGeom GdalGeo, imagesGeom []GdalGeo) (ratios []float32, dst AnyJson, unions, diffs []AnyJson, err error)

获取多个影像范围WKB分别在目标区域中的覆盖率及目标区域、影像范围、未覆盖区域的GeoJSON

func (*GdalToolbox) GetAreaCoverageRatio

func (g *GdalToolbox) GetAreaCoverageRatio(districtWkt string, imagesWkt []string) (ratio float32, err error)

获取多个影像的集合在目标区域中的覆盖率

func (*GdalToolbox) GetGeoJSONFromShp

func (g *GdalToolbox) GetGeoJSONFromShp(shp string) (ret AnyJson, err error)

将shp转为GeoJSON(srid=4326)

func (*GdalToolbox) GetLabelsFromShapefile

func (g *GdalToolbox) GetLabelsFromShapefile(shp, labelField string) (labels []string, err error)

获取shp文件中的标签

func (*GdalToolbox) GetSridOfShapefile

func (g *GdalToolbox) GetSridOfShapefile(shp string) (srid int, err error)

获取shp的srid

func (*GdalToolbox) GetWkbFromShp

func (g *GdalToolbox) GetWkbFromShp(shp string) (ret GdalGeo, err error)

将shp转为单个WKB(srid=4326)

func (*GdalToolbox) GetWktFromShp

func (g *GdalToolbox) GetWktFromShp(shp string) (ret string, err error)

将shp转为单个WKT(srid=4326)

func (*GdalToolbox) GetWktSpan added in v1.0.1

func (g *GdalToolbox) GetWktSpan(wkt string, srid int) (span [4]float64, err error)

获取WKT经纬度范围

func (*GdalToolbox) Intersection

func (g *GdalToolbox) Intersection(gs []GdalGeo, srid int) (ret GdalGeo, err error)

获取多个WKB矢量面公共区

func (*GdalToolbox) MuffAndSimp

func (g *GdalToolbox) MuffAndSimp(wkt string, t float64) (out string, err error)

func (*GdalToolbox) ParseMeteoRaster

func (g *GdalToolbox) ParseMeteoRaster(tif string, buf []int16) (err error)

读取气象Tif

func (*GdalToolbox) ParseRaster

func (g *GdalToolbox) ParseRaster(tif string, buf [][]byte) (err error)

读取一般Tif

func (*GdalToolbox) ParseShapefile

func (g *GdalToolbox) ParseShapefile(shp, labelField string) (ret []Speckle, err error)

从shp文件中解析出图斑矢量

func (*GdalToolbox) ProcessZoneMerge

func (g *GdalToolbox) ProcessZoneMerge(uc *Uncertainty, dis int) (ret AnyJson, err error)

拆分、凸包+缓冲、合并目标区域WKB,输出GeoJSON

func (*GdalToolbox) Reshape

func (g *GdalToolbox) Reshape(wkt, line string) (out string, err error)

func (*GdalToolbox) ShapefileToGeoJSON

func (g *GdalToolbox) ShapefileToGeoJSON(shp string, dstSrid ...int) (out string, err error)

从shp文件转化生成geoJson文件,可通过dstSrid指定目标srid

func (*GdalToolbox) Simplify

func (g *GdalToolbox) Simplify(wkt string) (out string, err error)

func (*GdalToolbox) SubtractZones

func (g *GdalToolbox) SubtractZones(uc *Uncertainty, subs []Uncertainty, srid int) (err error)

从目标区域WKB中剪除多个其他区域WKB

func (*GdalToolbox) TransformShapefile

func (g *GdalToolbox) TransformShapefile(shp string, tSrid int) (out string, err error)

转换整个shp文件的坐标系

func (*GdalToolbox) TransformWkb

func (g *GdalToolbox) TransformWkb(wkb GdalGeo, srid, tSrid int) (ret GdalGeo, err error)

转换WKB坐标系

func (*GdalToolbox) TransformWkt added in v1.0.3

func (g *GdalToolbox) TransformWkt(wkt string, srid, tSrid int) (ret string, err error)

转换WKT坐标系

func (*GdalToolbox) Union

func (g *GdalToolbox) Union(gs []GdalGeo, srid int) (ret GdalGeo, err error)

合并多个WKB矢量面

func (*GdalToolbox) UpdateLabelInShapefile

func (g *GdalToolbox) UpdateLabelInShapefile(shp, labelField, zone string, alignRet AlignedLabel) (err error)

更新shp文件中的标签,可通过zone shp(两个shp坐标系要一致)指定更新/截取区域

func (*GdalToolbox) WkbToGeoJSON

func (g *GdalToolbox) WkbToGeoJSON(wkb GdalGeo, srid int) (ret AnyJson, err error)

WKB转GeoJSON

func (*GdalToolbox) WkbToWkt

func (g *GdalToolbox) WkbToWkt(wkb GdalGeo, srid int) (wkt string, err error)

WKB转WKT

func (*GdalToolbox) WktToWkb

func (g *GdalToolbox) WktToWkb(wkt string, srid int) (wkb GdalGeo, err error)

WKT转WKB

func (*GdalToolbox) WriteGeoToShapefile

func (g *GdalToolbox) WriteGeoToShapefile(shp string, srid int, gs ...GdalGeo) (err error)

将选定矢量WKB写入shp

func (*GdalToolbox) WriteMergedShapefile

func (g *GdalToolbox) WriteMergedShapefile(shp string, uc Uncertainty) (err error)

将图斑合并区域矢量写入shp

func (*GdalToolbox) WriteShapefile

func (g *GdalToolbox) WriteShapefile(shp, labelField string, srid int, speckles ...Speckle) (err error)

将选定图斑矢量写入shp

func (*GdalToolbox) WriteZoneShapefile

func (g *GdalToolbox) WriteZoneShapefile(shp string, srid int, ucs ...Uncertainty) (err error)

将选定区域矢量写入shp

type ImgMergeFile

type ImgMergeFile struct {
	Infile    string `json:"infile"`     // 镶嵌影像
	BandOrder string `json:"band_order"` // 波段顺序
	Wkt       string `json:"wkt"`        // 镶嵌影像有效范围
}

type LabelCode

type LabelCode = [2]string // [label,code]

type Speckle

type Speckle struct {
	Geom      GdalGeo // 图斑的矢量面WKB
	ClassName string  // 标签名
}

图斑矢量

type Uncertainty

type Uncertainty struct {
	Id   int
	Geom GdalGeo
}

区域矢量

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL