前言
最近要使用 ubunt 进行开发,安装一个虚拟机太耗资源,正好有 wsl,所以安装 wsl 进行 ubuntu 的开发 。讲真,这个确实比虚拟机好用,尤其是 wsl2,可以直接调用主主机的 GPU(亲测好用)。话不多说,开始今天的正文部分。
贴一个 wsl 的微软的官网吧。
https://learn.microsoft.com/zh-cn/windows/wsl/install
一、安装 wsl
- 直接用命令行安装:
大约 2 分钟
最近要使用 ubunt 进行开发,安装一个虚拟机太耗资源,正好有 wsl,所以安装 wsl 进行 ubuntu 的开发 。讲真,这个确实比虚拟机好用,尤其是 wsl2,可以直接调用主主机的 GPU(亲测好用)。话不多说,开始今天的正文部分。
贴一个 wsl 的微软的官网吧。
https://learn.microsoft.com/zh-cn/windows/wsl/install
fun createGpkgByStr(dataPath: String, geojson: String): String {
val ctm = System.currentTimeMillis()
val name = "temp$ctm"
val path = dataPath + File.separator + "tmp" + File.separator + "${name}.gpkg"
ogr.RegisterAll()
val ds = ogr.GetDriverByName("GPKG").CreateDataSource(path)
val sr = SpatialReference()
sr.ImportFromEPSG(4326)
val layer = ds.CreateLayer("temp", sr, 3)
val feature = Feature(layer.GetLayerDefn())
val geom = Geometry.CreateFromJson(geojson)
geom.FlattenTo2D()
feature.SetGeometry(geom)
layer.CreateFeature(feature)
// ds.FlushCache()
// ds.SyncToDisk()
// gdal.GDALDestroyDriverManager()
return path
}
// 创建4326坐标系
private val sp by lazy {
val sp = SpatialReference()
sp.ImportFromEPSG(4326)
sp
}
private val basePath: String = "H:\\java\\nrs\\"
// 进行地理配准
fun handleImg(path: String) {
gdal.AllRegister()
val dataset = gdal.Open(path)
val x = dataset.rasterXSize
val y = dataset.rasterYSize
val list = listOf(
GCP(115.2626, 36.832971, 0.0, 0.0),
GCP(115.176448, 36.527851, 0.0, y.toDouble()),
GCP(115.554089, 36.457752, x.toDouble(), y.toDouble()),
GCP(115.641695, 36.762737, x.toDouble(), 0.0),
)
dataset.SetGCPs(list.toTypedArray(), sp.ExportToWkt())
val vector = Vector<String>()
// -srcnodata 0 去除黑边
// -of PNG 设置输出格式
"-r near -of PNG -srcnodata 0 -dstalpha".split(" ").forEach { vector.add(it) }
gdal.Warp("$basePath/test.png", listOf(dataset).toTypedArray(), WarpOptions(vector))
}
fun getExtent(path: String) {
gdal.AllRegister()
val driver = gdal.GetDriverByName("GTiff")
val dataset = gdal.Open(path)
val x = dataset.rasterXSize
val y = dataset.rasterYSize
val transforme = dataset.GetGeoTransform()
val west = transforme[0]
val dx = transforme[1]
val north = transforme[3]
val dy = transforme[5]
val east = west + dx * x
val sourth = north + dy * y
println("${west},${east},${north},${sourth} ")
// val ds = ogr.Open(path)
// println(layer.GetExtent())
}
sudo apt-get update
sudo apt-get install build-essential autoconf automake libtool pkg-config unzip ant swig libxml2-dev libgeos-dev libproj-dev libsqlite3-dev libtiff5-dev libjpeg-dev zlib1g-dev libpng-dev libgif-dev libjson-c-dev libcairo2-dev postgresql-server-dev-all sqlite3 libpq-dev
gdal.AllRegister()
val dataset = gdal.OpenEx("F:\\files\\shp\\1698817993242\\BGD.shp")
// val spatialReference = SpatialReference();
// spatialReference.ImportFromEPSG(4326);
// val wkt = spatialReference.ExportToWkt()
// println(wkt)
val vector: Vector<String> = Vector();
vector.addElement("-overwrite")
// vector.addElement("-skipfailures")
vector.addElement("-t_srs")
vector.addElement("EPSG:4326")
val vectorOption = VectorTranslateOptions(vector);
gdal.VectorTranslate("F:\\files\\shp\\geojson\\BGD.geojson", dataset, vectorOption)