Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var About = &cli.Command{ Name: "about", Usage: "相关信息", Action: func(c *cli.Context) error { exePath, _ := sys.GetExePath() execPath, _ := os.Getwd() fmt.Printf(` %c[1;31;40m---关于---%c[0m 执行程序的所在位置:%s 当前程序执行位置:%s`, 0x1B, 0x1B, exePath, execPath) return nil }, }
var Active = &cli.Command{ Name: "active", Usage: "模拟鼠标和键盘操作,使电脑保持活动状态", Action: func(c *cli.Context) error { select {} }, }
active
var ArcgisMapServerQuery = &cli.Command{ Name: "arcgis-mapserver-query", Usage: "获取arcgis的query服务数据", Action: func(c *cli.Context) error { url := c.Args().Get(0) fname := c.Args().Get(1) token := c.Args().Get(2) resp, err := http.Get(url + "?f=json") if err != nil { log.Println("请求错误,请检查服务是否正常运行") } else { log.Println("请求成功", url) } defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) var data ArcgisMapServerMeta if err := json.Unmarshal(body, &data); err != nil { panic(err) } log.Println(len(data.Layers)) for _, layer := range data.Layers { if len(layer.SubLayerIds) > 0 { log.Println(layer.Name, len(layer.SubLayerIds)) continue } layerFName := fname + "/" + layer.Name queryURL := fmt.Sprintf("%s/%d"+"/query", url, layer.ID) log.Println(queryURL) if ds.IsExist(layerFName) { continue } go reptile(queryURL, layerFName, token, true) } select {} }, }
var ArcgisMapServerQueryTest = &cli.Command{ Name: "arcgis-mapserver-query-test", Usage: "获取arcgis的query服务数据", Action: func(c *cli.Context) error { for index := range 10000 { u := fmt.Sprintf("http://10.135.6.100:6080/arcgis/rest/services/FDMS/base_query/MapServer/2/%d?f=json", index) data, err := ctp.Get(u) if err != nil { panic(err) } log.Println(u, len(data)) ds.Save(fmt.Sprintf("./arcgis_data/小流域/%d.json", index), data) } return nil }, }
arcgis-query 一次性采集所有mapserver下的图层 nix arcgis-mapserver-query <服务地址> <保存路径> <token> nix arcgis-mapserver-query http://10.135.6.100:6080/arcgis/rest/services/FDMS/layercontrol/MapServer ./arcgis-data nix arcgis-mapserver-query-test
var ArcgisQuery = &cli.Command{ Name: "arcgis-query", Usage: "获取arcgis的query服务数据", Action: func(c *cli.Context) error { url := c.Args().Get(0) if url == "" { reptileDefault() } else { fname := c.Args().Get(1) if fname == "" { fname = clock.Now().Fmt(clock.FmtCompactFullDate) + ".json" } token := c.Args().Get(2) go reptile(url, fname, token, false) } select {} }, }
arcgis-query nix arcgis-query <服务地址> <保存路径> <token>
var Basis = &cli.Command{ Name: "basis", Usage: "将图片转成basis纹理图", Action: func(c *cli.Context) error { // ktx2 使用ktx2,内置纹理格式减少加载量 // comp_level 压缩等级 var args = []string{"-ktx2"} args = append(args, c.Args().Slice()...) sys.MemExec(embedBasisu, args...) return nil }, }
Basis basisu -ktx2 x.png
var Build = &cli.Command{ Name: "build", Usage: "nix run build 的简写", Action: func(c *cli.Context) error { return sys.Exec("nix", "run", "build") }, }
var Clone = &cli.Command{ Name: "clone", Usage: "相关信息", Action: func(c *cli.Context) error { return nil }, }
git clone
var Dev = &cli.Command{ Name: "dev", Usage: "nix run dev 的简写", Action: func(c *cli.Context) error { return sys.Exec("nix", "run", "dev") }, }
var Esbuild = &cli.Command{ Name: "esbuild", Usage: "相关信息", Action: func(c *cli.Context) error { args := c.Args() url := args.Get(0) result := api.Build(api.BuildOptions{ EntryPoints: []string{url}, MinifyWhitespace: true, MinifyIdentifiers: true, MinifySyntax: true, Outfile: "out.js", Write: true, }) if len(result.Errors) > 0 { return errors.New(result.Errors[0].Text) } return nil }, }
Esbuild
var Exec = &cli.Command{ Name: "exec", Usage: "执行脚本", Action: func(c *cli.Context) error { fmt.Println(sys.GetCurrentPath()) scriptName := c.Args().Get(0) command := exec.Command(filepath.Join(`./scripts`, scriptName)) result, err := command.Output() if err != nil { fmt.Println(err) } else { fmt.Println(result) } return nil }, }
var FBX2glTF = &cli.Command{ Name: "FBX2glTF", Usage: "将fbx模型格式转换为gltf", Action: func(c *cli.Context) error { args := c.Args().Slice() args = append([]string{"-b", "-d"}, args...) sys.MemExec(embedFBX2glTF, args...) return nil }, }
@see https://github.com/facebookincubator/FBX2glTF FBX2glTF -b -d -i xx.fbx -o xx.glb
var FFmpeg = &cli.Command{ Name: "ffmpeg", Usage: "", Action: func(c *cli.Context) error { sys.MemExec(embedFFmpeg, c.Args().Slice()...) return nil }, }
FFmpeg ffmpeg -i input.mp4 output.avi ffmpeg -i input.mp4 -c:v copy -c:a copy -f hls -hls_time 5 -hls_list_size 0 -hls_flags delete_segments test/output.m3u8 ffmpeg -i input.webm -c:v libx264 -crf 25 -preset veryfast -c:a aac -b:a 128k -ac 2 -ar 44100 -f hls -hls_time 5 -hls_list_size 30 -hls_flags delete_segments -hls_segment_type mpegts test/output.m3u8 提取视频截图,1秒一帧 ffmpeg -i input.mp4 -vf "fps=1" output/%03d.png 视频截图,两帧 ffmpeg -i input.mp4 -vf "select='not(mod(n\,2))'" -vsync vfr output/%03d.png 视频截图,一帧 ffmpeg -i input.mp4 -vf "select='1'" -vsync vfr output/%03d.png
var Fs = &cli.Command{ Name: "fs", Usage: "文件操作命令集", Subcommands: []*cli.Command{ { Name: "append", Usage: "批量往文件追加内容", Flags: []cli.Flag{ &cli.StringFlag{Name: "suffix"}, &cli.StringFlag{Name: "dir", Aliases: []string{"d"}}, &cli.StringFlag{Name: "start", Aliases: []string{"s"}}, }, Action: func(c *cli.Context) error { ds.EachFilesToAppendHead(c.String("d"), c.String("s"), map[string]any{ "suffix": c.String("suffix"), }) return nil }, }, { Name: "rename", Usage: "批量重命名文件", Flags: []cli.Flag{ &cli.StringFlag{Name: "dir", Aliases: []string{"d"}}, }, Action: func(c *cli.Context) error { return nil }, }, { Name: "split", Usage: "切割大文件", Flags: []cli.Flag{ &cli.StringFlag{Name: "name", Aliases: []string{"n"}}, &cli.StringFlag{Name: "chunkSize", Aliases: []string{"cs"}}, }, Action: func(c *cli.Context) error { chunkSize := c.Int("cs") if chunkSize == 0 { chunkSize = 1024 * 1000 * 1000 * 16 } return ds.SplitFile(c.String("name"), chunkSize) }, }, { Name: "merge", Usage: "合并被切割的大文件", Flags: []cli.Flag{ &cli.StringFlag{Name: "dir", Aliases: []string{"d"}}, }, Action: func(c *cli.Context) error { name := c.String("d") files, err := ds.GetFiles(name) slices.SortFunc(files, func(a string, b string) int { ai, _ := strconv.Atoi(filepath.Base(a)) bi, _ := strconv.Atoi(filepath.Base(b)) return ai - bi }) if err != nil { return err } return ds.MergeFiles(files, strings.Split(filepath.Base(name), "_")[0]) }, }, }, }
Fs 文件操作命令集
var GltfTexture = &cli.Command{ Name: "gltf-texture", Usage: "获取gltf模型的纹理图片", Action: func(c *cli.Context) error { args := c.Args().Slice() t := transform.FromPath(args[0]) err := t.RunGetTextures() if err != nil { return err } return nil }, }
GltfTexture
var IP = &cli.Command{ Name: "ip", Usage: "查看当前ip信息", Action: func(c *cli.Context) error { return nil }, }
var Init = &cli.Command{ Name: "init", Usage: "`初始化", Action: func(c *cli.Context) error { if ds.IsExist("package.json") { } else { ds_json.Save("package.json", &types.PackageJSON{ Name: sys.GetCurrentDirname(), Version: "1.0.0", Author: "mocheer", License: "MIT", Scripts: map[string]string{}, }) } return nil }, }
var Install = &cli.Command{ Name: "install", Usage: "`升级安装所有依赖包", Action: func(c *cli.Context) error { return sys.Exec("go", "get", "-u") }, }
go get -u all
var NSSM = &cli.Command{ Name: "nssm", Usage: "执行nssm.exe注册windows服务", Action: func(c *cli.Context) error { sys.MemExec(embedNSSM, c.Args().Slice()...) return nil }, }
nssm install {appName} {execPath}/charon.exe nssm start {appName} nssm stop {appName}
var Package = &cli.Command{ Name: "package", Usage: "查看配置文件", Action: func(c *cli.Context) error { data, err := ds_text.ReadFile("./package.json") if err == nil { fmt.Println(data) } return nil }, }
Package
var PointCloud = &cli.Command{ Name: "point-cloud", Usage: "从点云数据中生成3dtiles模型", Action: func(c *cli.Context) error { return nil }, }
PointCloud
var Publish = &cli.Command{ Name: "publish", Usage: "发布tag版本", Action: func(c *cli.Context) error { tagName := c.Args().Get(0) if tagName != "" { sys.Exec("git", "tag", tagName, "-f") sys.Exec("git", "push", "--tags") return nil } var conf types.PackageJSON err := ds_json.ReadFile("./package.json", &conf) if err == nil { sys.Exec("git", "tag", fmt.Sprintf("v%s", conf.Version)) sys.Exec("git", "push", "--tags") sys.Exec("nix", "version") } return nil }, }
Publish nix publish git tag v1.0.0 git push --tags
var Rename = &cli.Command{ Name: "rename", Usage: "重命名", Action: func(c *cli.Context) error { return nil }, }
var Rsa = &cli.Command{ Name: "rsa", Usage: "生成rsa文件", Action: func(c *cli.Context) error { dir := c.Args().Get(0) if dir == "" { dir = path.Join(global.ExportDir, "rsa") } ec_rsa.GenPemFiles(dir, 2048) return nil }, }
nix rsa 生成密钥文件
var Run = &cli.Command{ Name: "run", Usage: "执行脚本", Action: func(c *cli.Context) error { var conf types.PackageJSON err := ds_json.ReadFile("./package.json", &conf) if err == nil { scriptName := c.Args().Get(0) scriptContent := conf.Scripts[scriptName] if scriptContent != "" { scriptContent = fn.Format(scriptContent, ts.Map[any]{ "appName": conf.Name, "name": conf.Name, "version": conf.Version, "execPath": sys.GetCurrentPath(), }) fmt.Println("Powershell >", scriptContent) sys.Shell(scriptContent) postScriptContent := conf.Scripts[scriptName+"#post"] if postScriptContent != "" { sys.Shell(postScriptContent) fmt.Println("Powershell >", scriptContent) } } } return nil }, }
Run
var Scoop = &cli.Command{ Name: "scoop", Usage: "安装scoop", Action: func(c *cli.Context) error { sys.Shell("Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')") return nil }, }
var Serve = &cli.Command{ Name: "serve", Usage: "启动一个简易的web服务器", Action: func(c *cli.Context) error { handle := http.FileServer(http.Dir(".")) http.Handle("/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { if r.URL.RawQuery != "" { name := r.URL.Path + "@" + url.QueryEscape(r.URL.RawQuery) if name[0] == '/' { name = "." + name } if ds.IsExist(name) { log.Println(name) http.ServeFile(w, r, name) return } name = r.URL.Path + url.QueryEscape(r.URL.RawQuery) if name[0] == '/' { name = "." + name } if ds.IsExist(name) { log.Println(name) http.ServeFile(w, r, name) return } log.Println(name, r.URL.Path, r.URL.RawQuery) if ds.IsExist(r.URL.Path) { http.ServeFile(w, r, r.URL.Path) return } http.NotFound(w, r) return } handle.ServeHTTP(w, r) })) log.Println("http://localhost:9212/") http.ListenAndServe(":9212", nil) return nil }, }
Serve : nix serve nix serve -p=9912 可用于搭配爬虫服务中下载所有网站资源的功能,api也是一种资源,这里解决api重定向的问题
var Struct = &cli.Command{ Name: "struct", Usage: "从数据库中读取库表模型转成struct", Action: func(c *cli.Context) error { db, err := openDB() if err != nil { return err } query := db.Raw(`SELECT tb.tablename as tablename, a.attname AS columnname, t.typname AS type FROM pg_class as c, pg_attribute as a, pg_type as t, (select tablename from pg_tables where schemaname = @schema) as tb WHERE a.attnum > 0 and a.attrelid = c.oid and a.atttypid = t.oid and c.relname = tb.tablename order by tablename`, map[string]any{"schema": "pipal"}) result := scanIntoMap(query) fmt.Println(result) return nil }, }
Struct : nix struct schemeName
var Tif = &cli.Command{ Name: "tif", Usage: "查看tif文件标签属性", Action: func(c *cli.Context) error { args := c.Args() fileName := args.Get(0) fmt.Println(fileName) t, _ := ds_tif.ReadFile(fileName) fmt.Println(t.Tif.IFDs()) return nil }, }
tif nix tif ./data/25S_20200101-20210101.tif
var Tile = &cli.Command{ Name: "tile", Usage: "下载在线瓦片地图", Action: func(c *cli.Context) error { args := c.Args() url := args.Get(0) name := args.Get(1) if name == "" { name = "data/tile-" + clock.Now().Fmt(clock.FmtCompactFullDate) } t := &tile.LoadConfig{ URL: url, DirName: name, MinZoom: 0, MaxZoom: 18, } t.LoadAndSave() return nil }, }
Tile : nix tile xxx nix tile "http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetPurplishBlue/MapServer/tile/{z}/{x}/{y}" data/tile-arcgis-dark nix tile "https://iserver.supermap.io/iserver/services/map-china400/rest/maps/ChinaDark/zxyTileImage.png?z={z}&x={x}&y={y}" data/tile-supermap-dark
var TileArcgis = &cli.Command{ Name: "tile-arcgis", Usage: "下载arcgis本地瓦片地图", Action: func(c *cli.Context) error { args := c.Args() url := args.Get(0) name := args.Get(1) if name == "" { name = "data/tile-" + clock.Now().Fmt(clock.FmtCompactFullDate) } return tile.LoadArcgis(url, name) }, }
Tile : nix tile xxx nix tile-arcgis "./dmap-arcgis/dq" test/tile-arcgis-dark
var TileXYZ = &cli.Command{ Name: "tile-xyz", Usage: "下载在线瓦片地图", Action: func(c *cli.Context) error { args := c.Args() url := args.Get(0) name := args.Get(1) if name == "" { name = "public/tile-" + clock.Now().Fmt(clock.FmtCompactFullDate) } c2 := &tile.LoadConfig{ URL: url, DirName: name, MinZoom: 0, MaxZoom: 18, Subdomains: strings.Split("123", ""), } c2.LoadAndSave() return nil }, }
TileXYZ : nix tile-xyz xxx nix tile-xyz "http://webrd0{s}.is.autonavi.com/appmaptile?lang=zh_cn&style=8&x={x}&y={y}&z={z}" public/GaodeMap.Normal nix tile-xyz "http://wprd0{s}.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scl=2&style=6" public/GaodeMap.Satellite nix tile-xyz "http://wprd0{s}.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scl=1&style=8" public/GaodeMap.Satellite_A nix tile-xyz "http://t{s}.tianditu.gov.cn/DataServer?T=vec_c&x={x}&y={y}&l={z}&tk=070a93160eddd5f891599e51a6b764ac" public/Tianditu.Normal nix tile-xyz "http://t{s}.tianditu.gov.cn/DataServer?T=cva_w&x={x}&y={y}&l={z}&tk=070a93160eddd5f891599e51a6b764ac" public/Tianditu.Normal_A nix tile-xyz "http://t{s}.tianditu.gov.cn/DataServer?T=img_c&x={x}&y={y}&l={z}&tk=60714a8ef3e4491df43827cd34c2aa22" public/Tianditu.Satellite nix tile-xyz "http://t{s}.tianditu.gov.cn/DataServer?T=cia_w&x={x}&y={y}&l={z}&tk=60714a8ef3e4491df43827cd34c2aa22" public/Tianditu.Satellite_A nix tile-xyz "https://tile{s}.tianditu.gov.cn/vts?t=vt&z={z}&x={x}&y={y}&tk=34568012b0e7be57119fa5124bd7bdd6" public/Tianditu.Normal_VT
var Tileset = &cli.Command{ Name: "tileset", Usage: "下载在线3dtiles模型数据", Action: func(c *cli.Context) error { args := c.Args() url := args.Get(0) name := args.Get(1) fmt.Println(url) if name == "" { name = "data/3dtiles-" + clock.Now().Fmt(clock.FmtCompactFullDate) } name = filepath.Join(name, "tileset.json") err := tileset.Load(url, name) fmt.Println(err) return err }, }
Tileset : nix tileset xxx/tileset.json nix tileset http//122.112.175.6:8103/3dtile/tileset.json nix tileset https://www.thingjs.com/static/tilesData/tileset.json nix tileset https://tile.googleapis.com/v1/3dtiles/root.json?key=AIzaSyCnRPXWDIj1LuX6OWIweIqZFHHoXVgdYss googlephotorealistic3dtileset nix tileset http://data1.mars3d.cn/3dtiles/qx-hfdxy/tileset.json mars3d_video3d nix tileset http://112.81.89.197:9900/data/3dtiles/tileset.json data/3dtiles-20240708143021 以下是变种,龙文区九十九湾 nix tileset http://172.16.2.52/models-rest/rest/models/preview/LW99DG1/tileset.json data/lwq99w1 nix tileset http://172.16.2.52/models-rest/rest/models/preview/LW99DS2/tileset.json data/lwq99w2
var TilesetDem = &cli.Command{ Name: "tileset-dem", Usage: "下载在线3dtiles模型数据", Action: func(c *cli.Context) error { args := c.Args() url := args.Get(0) name := args.Get(1) fmt.Println(url) if name == "" { name = "data/3dtiles_dem-" + clock.Now().Fmt(clock.FmtCompactFullDate) } return nil }, }
Tileset : nix tileset xxx/tileset.json nix tileset-dem http////122.112.175.6:8114/dem/layer.json
var Upx = &cli.Command{ Name: "upx", Usage: "执行 upx 命令", SkipFlagParsing: true, Action: func(c *cli.Context) error { sys.MemExec(embedUpx, c.Args().Slice()...) return nil }, }
Upx upx -9 nix.exe
var Version = &cli.Command{ Name: "version", Usage: "修改版本号", Action: func(c *cli.Context) error { var conf types.PackageJSON err := ds_json.ReadFile("./package.json", &conf) if err == nil { versions := strings.Split(conf.Version, ".") pathchVersion := versions[len(versions)-1] pathchVersionInt := fn.ParseInt(pathchVersion) + 1 versions[len(versions)-1] = strconv.Itoa(pathchVersionInt) conf.Version = strings.Join(versions, ".") ds_json.SaveWithIndent("./package.json", conf) } return nil }, }
Functions ¶
This section is empty.
Types ¶
type ArcGISResponse ¶
type ArcGISResponse struct {
Features []json.RawMessage `json:"features"`
Error *struct {
Message string `json:"message"`
} `json:"error"`
}
type ArcgisMapServerMeta ¶
type ArcgisMapServerMeta struct {
CurrentVersion float64 `json:"currentVersion"`
ServiceDescription string `json:"serviceDescription"`
MapName string `json:"mapName"`
Description string `json:"description"`
CopyrightText string `json:"copyrightText"`
SupportsDynamicLayers bool `json:"supportsDynamicLayers"`
Layers []Layers `json:"layers"`
Tables []any `json:"tables"`
SpatialReference SpatialReference `json:"spatialReference"`
SingleFusedMapCache bool `json:"singleFusedMapCache"`
InitialExtent InitialExtent `json:"initialExtent"`
FullExtent FullExtent `json:"fullExtent"`
MinScale int `json:"minScale"`
MaxScale int `json:"maxScale"`
Units string `json:"units"`
SupportedImageFormatTypes string `json:"supportedImageFormatTypes"`
DocumentInfo DocumentInfo `json:"documentInfo"`
Capabilities string `json:"capabilities"`
SupportedQueryFormats string `json:"supportedQueryFormats"`
ExportTilesAllowed bool `json:"exportTilesAllowed"`
MaxRecordCount int `json:"maxRecordCount"`
MaxImageHeight int `json:"maxImageHeight"`
MaxImageWidth int `json:"maxImageWidth"`
SupportedExtensions string `json:"supportedExtensions"`
}
type DocumentInfo ¶
type DocumentInfo struct {
Title string `json:"Title"`
Author string `json:"Author"`
Comments string `json:"Comments"`
Subject string `json:"Subject"`
Category string `json:"Category"`
AntialiasingMode string `json:"AntialiasingMode"`
TextAntialiasingMode string `json:"TextAntialiasingMode"`
Keywords string `json:"Keywords"`
}
type FullExtent ¶
type FullExtent struct {
Xmin float64 `json:"xmin"`
Ymin float64 `json:"ymin"`
Xmax float64 `json:"xmax"`
Ymax float64 `json:"ymax"`
FullExtentSpatialReference FullExtentSpatialReference `json:"spatialReference"`
}
type InitialExtent ¶
type InitialExtent struct {
Xmin float64 `json:"xmin"`
Ymin float64 `json:"ymin"`
Xmax float64 `json:"xmax"`
Ymax float64 `json:"ymax"`
InitialExtentSpatialReference InitialExtentSpatialReference `json:"spatialReference"`
}
type SpatialReference ¶
Source Files
¶
- about.go
- active.go
- arcgis-mapserver-query-test.go
- arcgis-mapserver-query.go
- arcgis-query.go
- basis.go
- build.go
- clone.go
- dev.go
- esbuild.go
- exec.go
- fbx2gltf.go
- ffmpeg.go
- fs.go
- gltf-texture.go
- init.go
- install.go
- ip.go
- nssm.go
- package.go
- point-cloud.go
- publish.go
- rename.go
- rsa.go
- run.go
- scoop.go
- serve.go
- struct.go
- tif.go
- tile-arcgis.go
- tile-xyz.go
- tile.go
- tileset-dem.go
- tileset.go
- upx.go
- version.go