当前位置: 首页 > article >正文

Python大疆导出csv文件转化大地2000的dxf文件

大疆导出三维模型里面有个models\pc\0\terra_grid\csv\terra_grid.csv文件,里面记录所有点的坐标和高程,但坐标是经纬度坐标,需要转化为大地2000坐标。

我参照了:经纬度坐标转换为CGCS2000大地坐标系对应XY值(PYTHON实现)_经纬度转换大地2000坐标工具-CSDN博客和百度ai提供的代码:

import ezdxf
doc = ezdxf.new()  # 创建新 DXF 文档
msp = doc.modelspace()  # 获取模型空间# 添加点
msp.add_point((100, 200, 0), dxfattribs={'layer': 'Roads'})# 添加线
points = [(150, 300), (200, 400)]
msp.add_lwpolyline(points, dxfattribs={'layer': 'Buildings'})doc.saveas('output.dxf')

改写了一个能从csv文件转化为dxf文件的程序:

# -*- coding: utf-8 -*-
"""
Created on Wed Mar 19 10:38:48 2025@author: YBK
"""import math
import ezdxf
import csv
doc = ezdxf.new()  # 创建新 DXF 文档
msp = doc.modelspace()  # 获取模型空间def GaussToBLToGauss(longitude, latitude):output = [0.0, 0.0]longitude1, latitude1, longitude0, X0, Y0, xval, yval = 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0# ConstantsiPI = 0.0174532925199433  # 3.1415926535898/180.0;a = 6378137.0f = 1 / 298.257222101  # CGCS2000坐标系参数# a=6378137.0; f=1/298.2572236; #wgs84坐标系参数longitude0 = 117.0  # 中央子午线 根据实际进行配置longitude0 = longitude0 * iPI  # 中央子午线转换为弧度longitude1 = longitude * iPI  # 经度转换为弧度latitude1 = latitude * iPI  # 纬度转换为弧度e2 = 2 * f - f * fee = e2 * (1.0 - e2)NN = a / math.sqrt(1.0 - e2 * math.sin(latitude1) * math.sin(latitude1))T = math.tan(latitude1) * math.tan(latitude1)C = ee * math.cos(latitude1) * math.cos(latitude1)A = (longitude1 - longitude0) * math.cos(latitude1)M = a * ((1 - e2 / 4 - 3 * e2 * e2 / 64 - 5 * e2 * e2 * e2 / 256) * latitude1 - (3 * e2 / 8 + 3 * e2 * e2 / 32 + 45 * e2 * e2* e2 / 1024) * math.sin(2 * latitude1)+ (15 * e2 * e2 / 256 + 45 * e2 * e2 * e2 / 1024) * math.sin(4 * latitude1) - (35 * e2 * e2 * e2 / 3072) * math.sin(6 * latitude1))xval = NN * (A + (1 - T + C) * A * A * A / 6 + (5 - 18 * T + T * T + 72 * C - 58 * ee) * A * A * A * A * A / 120)yval = M + NN * math.tan(latitude1) * (A * A / 2 + (5 - T + 9 * C + 4 * C * C) * A * A * A * A / 24+ (61 - 58 * T + T * T + 600 * C - 330 * ee) * A * A * A * A * A * A / 720)X0 = 500000Y0 = 0xval = xval + X0yval = yval + Y0# 转换为投影output[0] = xvaloutput[1] = yvalreturn outputtry:with open('terra_grid.csv', 'r', encoding='utf-8') as file:reader = csv.reader(file)for row in reader:# Example usage:longitude_input = float(row[0])latitude_input = float(row[1])hight_imput = float(row[2]) - 14.81798172 # 高程校对 - 14.81798172result = GaussToBLToGauss(longitude_input, latitude_input)msp.add_point((result[0], result[1], hight_imput), dxfattribs={'layer': 'dji_gcd'})print(f"Converted Coordinates: X = {result[0]}, Y = {result[1]}")except FileNotFoundError:print("错误:文件不存在!")
except UnicodeDecodeError:print("错误:文件编码非 UTF-8,请尝试 'encoding='gbk'' 或 'latin-1'")
except Exception as e:print(f"未知错误: {e}")doc.saveas('output0319.dxf')

用时记得修改中央子午线值和高程校对值。

相关文章:

Python大疆导出csv文件转化大地2000的dxf文件

大疆导出三维模型里面有个models\pc\0\terra_grid\csv\terra_grid.csv文件,里面记录所有点的坐标和高程,但坐标是经纬度坐标,需要转化为大地2000坐标。 我参照了:经纬度坐标转换为CGCS2000大地坐标系对应XY值(PYTHON实…...

Python 中下划线 “_” 的多面性:从变量到约定

# Python中下划线“_”的多面性:从变量到约定 在Python的语法体系里,下划线“_”看似毫不起眼,实则扮演着极为重要且多样化的角色。它不仅能作为普通变量参与编程,更在多个特殊场景下有着独特的用途与约定。深入理解下划线的各种…...

Vue3项目开发:状态管理实践指南

# Vue3项目开发:状态管理实践指南 一、引言 背景介绍 在Vue项目中,状态管理是一个非常重要的话题。合理的状态管理能够帮助我们更好地组织和管理数据,提升项目的可维护性和可扩展性。本文将深入探讨Vue3项目中状态管理的最佳实践,…...

JVM-JAVA编译到执行全过程

源码文件(.java)到代码执行的全过程: 该过程主要分为四个阶段,“编译-》加载-》解释-》执行”。 在编译阶段需要将源码文件(.java)通过语法分析、语义分析、注解处理后得到class文件; 在加载…...

数据结构-------栈

顺序栈: 一、数据结构定义 数据元素 DATATYPE typedef struct person {char name[32];char sex;int age;int score; } DATATYPE;顺序栈结构 SeqStack typedef struct list {DATATYPE *head; // 栈空间首地址int tlen; // 栈总容量(total leng…...

机器学习概要

文章目录 一、什么是机器学习 二、机器学习的种类 1. 有监督学习 2. 无监督学习 3.强化学习 三、机器学习的应用 四、机器学习的步骤 1. 数据的重要性 2. 数据和学习的种类 3. 可视化 一、什么是机器学习 机器学习指的是计算机根据给定的问题、课题或环境进行学习&a…...

python:music21 与 AI 结合应用探讨

Python 的 music21 库与人工智能(AI)技术结合应用具有广泛的可能性,尤其是在音乐生成、分析和风格模拟等领域。以下是具体的结合方向与示例: 1. 音乐生成与 AI AI 模型驱动音乐生成: 使用深度学习模型(如 …...

【LangChain入门 2 Model组件】开始!LLM Models简单对话

文章目录 一、使用langchain_ollama二、采用DeepSeek的API三、Model 介绍3.1 OllamaLLM 预训练模型3.2 ChatOllama 聊天预训练模型3.3 OllamaEmbeddings 实现一个helloworld,跑通一个简单的对话。 后面章节会正式介绍LangChain的各个功能。 后台llm的端口可以任意选…...

7种寻址方式

1. 立即寻址 立即寻址也叫立即数寻址,操作数本身就在指令中给出,只要取出指令也就取到了操作数,这个操作数被称为立即数。立即数要求以 “#” 为前缀。 #0x1100:表示十六进制数#0b1100:表示二进制数#0d1100&#xff…...

C语言中,#define和typedef 定义int* 一个容易混淆的点

前言 首先来看一个代码&#xff1a; #include <stdio.h> #include <string.h>#define int_ptr int *int main() {int c 100;int_ptr a , b; // 等效于int * a,b; 那么b就是int类型&#xff0c;不是int*类型a &c;b &c; //报错return 0; } 原意&#x…...

C++20 中线程管理与取消机制的深度剖析

文章目录 std::jthread&#xff1a;更智能的线程管理背景与优势构造函数与 std::stop_token 的集成 std::stop_token、std::stop_source 和 std::stop_callback&#xff1a;灵活的取消机制std::stop_token&#xff1a;取消请求的指示器std::stop_source&#xff1a;取消请求的发…...

Vue3 核心特性解析:Suspense 与 Teleport 原理深度剖析

Vue3 核心特性解析&#xff1a;Suspense 与 Teleport 原理深度剖析 一、Teleport&#xff1a;突破组件层级的时空传送 1.1 实现原理图解 #mermaid-svg-75dTmiektg1XNS13 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-s…...

FPGA——实现LED流水灯

文章目录 一、Quartusll_18.1和VS Code软件的关联二、DE2-115的时钟电路三、流水灯的分层次设计四、总结 一、Quartusll_18.1和VS Code软件的关联 1.先打开Quartus II 软件&#xff0c;然后选择菜单栏“Tools”下的“Options…”。 2.点击“Options…”&#xff0c;在弹出的对…...

Excel 小黑第12套

对应大猫13 涉及金额修改 -数字组 -修改会计专用 VLOOKUP函数使用&#xff08;查找目标&#xff0c;查找范围&#xff08;F4 绝对引用&#xff09;&#xff0c;返回值的所在列数&#xff0c;精确查找或模糊查找&#xff09;双击填充柄就会显示所有值 这个逗号要中文的不能英…...

6、说一下索引失效的场景?【中高频】

索引失效意味着 查询操作 不能利用索引进行数据检索&#xff0c;而是使用 全表扫描&#xff08;也就是 数据库需要从磁盘上读取表的所有数据行&#xff09;&#xff0c;从而导致性能下降&#xff0c;下面一些场景会发生索引失效 对索引使用左或者左右模糊匹配&#xff08;where…...

Noe.js 原生 http 模块 vs Express 框架对比

Noe.js 原生 http 模块 vs Express 框架对比 Noe.js 原生 http 模块 vs Express 框架对比 以下从多个维度对比两种方法&#xff0c;并提供详细示例&#xff0c;帮助初学者理解差异。 1. 基础架构对比 特性原生 http 模块Express 框架核心依赖Node.js 内置模块 (require(htt…...

滚动元素的新api

点击的时候需要双重视图滚动 itemClick(id) {// 滚动到对应位置this.$nextTick(() > {// 找到对应 id 在 initList2 中的索引const index this.initList2.findIndex((item) > item.id Number(id));if (index ! -1) {// 获取所有菜单项const menuItems document.queryS…...

多机调度问题(C语言)

代码如下&#xff1a; #include<stdio.h> #include<stdlib.h>int compare(void* a, void* b)//比较函数&#xff0c;用于qsort按处理时间从大到小排序 {return *(int*)a - *(int*)b; }int LPT(int jobs[], int n, int m)//多机调度问题的LPT算法 {qsort(jobs, n, …...

JS做贪吃蛇小游戏(源码)

一、HTML代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><link rel…...

烽火HG680-KB_海思HI3798MV310_安卓9.0_U盘强刷固件包及注意点说明

之前发布过这个固件包&#xff0c;关于烽火HG680-KA&#xff0f;HG680-KB_海思HI3798MV310_安卓9.0_U盘强刷固件包详细说明一下&#xff0c;汇总总结一些常遇到的情况&#xff0c;这次固件会分开发布&#xff0c;以免混淆。 上一个帖子地址&#xff1a;烽火HG680-KA&#xff0…...

Java数据结构相关知识

文章目录 1. 自动装箱和自动拆箱2. Object的equals方法3. Comparable和Comparator接口 1. 自动装箱和自动拆箱 自动装箱&#xff1a;将基本数据类型自动转换为对应的包装类。自动拆箱&#xff1a;将包装类自动转换为对应的基本数据类型。 显示装箱 int primitiveInt 10; //…...

996引擎 - 红点系统

996引擎 - 红点系统 总结NPC 红点(TXT红点)Lua 红点1. Red_Point.lua2. UI_Ex.lua参考资料以下内容是在三端 lua 环境下测试的 总结 红点系统分几个部分组成。 M2中设置变量推送。 配置红点表。 Envir\Data\cfg_redpoint.xls 2.1. UI元素中找到ID填写 ids 列。 主界面挂载…...

7种数据结构

7种数据结构 顺序表sqlite.hseqlite.c 单链表linklist.clinklist.h 双链表doulinklist.cdoulinklist.h 链式栈linkstack.clinkstack.h 队列SeqQueue.cSeqQueue.h 树tree.c 哈希表hash.c 顺序表 sqlite.h #ifndef __SEQLIST_H__ #define __SEQLIST_H__ typedef struct person…...

Redis的消息队列是怎么实现的

Redis 本身并不是一个专门的消息队列系统,但它的 List、Pub/Sub 和 Stream 数据结构可以用来实现消息队列的功能。以下是 Redis 实现消息队列的几种常见方式: 1. 基于 List 实现消息队列 Redis 的 List 是一个双向链表,支持在头部和尾部进行高效的插入和删除操作,非常适合…...

3.17BUUCTF练习day1

BUUCTF练习day1 [极客大挑战 2019]EasySQL1&#xff08;字符型&#xff0c;账号密码型&#xff0c;get型&#xff09; 判断闭合方式 在用户名输入1‘&#xff0c;此时密码先输入任何数字时&#xff0c;出现语法错误 说明闭合方式为单引号闭合&#xff0c;在判断完闭合方式后…...

【贪心算法】柠檬水找零

1.题目解析 860. 柠檬水找零 - 力扣&#xff08;LeetCode&#xff09; 2.讲解算法原理 分情况讨论 5---》直接收下 10---》找五元&#xff0c;收下 20----》105△ ----》555 由于5元更有用&#xff0c;则尽可能保留5元 3.代码 class Solution {public boolean lemonadeCh…...

黑马跟学.苍穹外卖.Day08

黑马跟学.苍穹外卖.Day08 苍穹外卖-day8课程内容1. 工作台1.1 需求分析和设计1.1.1 产品原型1.1.2 接口设计 1.2 代码导入1.2.1 Controller层1.2.2 Service层接口1.2.3 Service层实现类1.2.4 Mapper层 1.3 功能测试1.3.1 接口文档测试1.3.2 前后端联调测试 1.4 代码提交 2. Ap…...

ABAP语言的动态编程(4) - 综合案例:管理费用明细表

本篇来实现一个综合案例&#xff1a;管理费用明细表。报表在实际项目中&#xff0c;也有一定的参考意义&#xff0c;一方面展示类似的报表&#xff0c;比如管理费用、研发费用等费用的明细&#xff0c;使用业务比较习惯的展示格式&#xff1b;另一方面正好综合运用前面学习的动…...

通过Geopandas进行地理空间数据可视化

目录 引言 安装与导入 数据加载与探索 数据预处理 基本地图可视化 添加其他数据到地图上 空间分析与查询 地图叠加与分组 空间缓冲区 交互式地图可视化 实际应用案例 城市规划 环境监测 结论 引言 在数据科学领域,地理空间数据可视化扮演着至关重要的角色。它不…...

【大语言模型_5】xinference部署embedding模型和rerank模型

一、安装xinference pip install xinference 二、启动xinference ./xinference-local --host0.0.0.0 --port5544 三、注册本地模型 1、注册embedding模型 curl -X POST "http://localhost:5544/v1/models" \ -H "Content-Type: application/json" \…...