golang 读取shp文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang 读取shp文件相关的知识,希望对你有一定的参考价值。

参考技术A package main

import (

"fmt"

"github.com/jonas-p/go-shp"

"log"

"reflect"

)

func main()

// open a shapefile for reading

  reader, err := shp.Open("E:/example.shp")

if err != nil

log.Fatal(err)



defer reader.Close()

// fields from the attribute table (DBF)

  fields := reader.Fields()

//fmt.Println(reader.AttributeCount())

//for k, f := range fields

// fmt.Println(k,f)

//

////fmt.Println(reader.Attribute(0))

//loop through all features in the shapefile

  for reader.Next()

n, p := reader.Shape()

point := p.(*shp.Point)

x := point.X

y := point.Y

fmt.Println(x, y)

// print feature

      fmt.Println(reflect.TypeOf(p).Elem(), p.BBox())

// print attributes

      for k, f :=range fields

val := reader.ReadAttribute(n, k)

fmt.Printf("\t%v: %v\n", f, val)



fmt.Println()



mfc通过MapWinGIS控件读取shp文件(不通过#import实现)

1、首先注册MapWinGIS ActiveX组件,

引入MapWinGIS.ocx产生的MapWinGIS_i.h和MapWinGIS_i.c文件,利用CoCreateInstance函数来调用

 

演示代码:

/*在工程中加入MapWinGIS_i.c文件,该文件定义了类和接口的guid值,如果不引入的话,会发生连接错误。*/

 

#include "MapWinGIS_i.h"

CoInitialize(NULL);

IShapefile* ptr = NULL;

 HRESULT hr = CoCreateInstance(CLSID_Shapefile, NULL, CLSCTX_ALL, IID_IShapefile, (void**)&ptr);

 if (SUCCEEDED(hr) && (ptr!= NULL))

{

    VARIANT_BOOL retval = 0;
              ptr->Open(_bstr_t(m_shapePath), NULL, &retval);

    m_map.addLayer(ptr, true);
 } 

CoUninitialize();

 

其他的类创建与之类似

 



以上是关于golang 读取shp文件的主要内容,如果未能解决你的问题,请参考以下文章

golang 在#golang中逐行读取文件

golang Golang示例:逐行读取文件。

golang Golang:读取文件并使用参数写入磁盘

golang怎么逐个读取目录下的所有文件

golang 文件读取

一行一行读取文件没有换行符golang