矢量

海量多边形矢量并行平滑实现

走远了吗. 提交于 2019-12-02 12:46:59
最近工作需要对提取的矢量图斑进行平滑(shp格式),所以就对这里进行了一点小小的研究,主要是对Chaikin-curve算法进行改进,其实还有很多优秀的算法可以拿来用,迫于时间,就没有继续深入, 这篇博客,权当是抛砖引玉,希望真正搞平滑算法的”同志们“,能够展示出自己真正的优秀算法。我们知道,当多边形数量为几百个,几千个,可能cpu串行和并行计算效率差距不大,但是当数量突破万个,几十万个,几百万个呢? 串行明显就不行了,所以我这里探索了并行矢量平滑算法。。。我在后面开源了代码,如果各位对代码有疑问或者需要理解的,qq:1044625113,备注:矢量并行处理 我计算了12万个多边形, 计算效率对比,如下表所示: 计算模式 计算时间(秒) 串行 70 并行(四核) 20 节省了整整三倍啊,兄弟们,这个很爽啊! 图 原始矢量图斑 图 平滑后矢量图斑 下面贴上矢量平滑的主函数代码: % chaikin-curve ???????????????? % written by Mr zhipan Wang,Email:1044625113@qq.com,BeiJing,2019-10-21 % refer:https://www.cnblogs.com/hongru/archive/2011/10/27/2226946.html clear tic %% read shape file

海量数据展示

心不动则不痛 提交于 2019-12-02 11:07:38
背景     现在我们的数据量越来越来越大,往往会有短时间渲染大量数据的要求,但是往往这些数据过大难以实时处理,整体切片花费时间又过长。在这里提出一种缓存加实时处理的方案。 准备     软件环境,PostGIS(3.0.0rc2 r17909)和 PostgreSQL( 12.0, compiled by Visual C++ build 1914, 64-bit),数据是微软开源的房屋数据。PostGIS3.0相对与PostGIS 2.5大幅度提升矢量切片性能,并行环境表现更好。 预处理     预处理就是将3级到12级的矢量切片事先切好。首先获取数据12级的最大最小xyz,通过这个范围生成网格,然后和数据相交得到一一对应的关系表a。     接下来就是使用四叉树键(quadkey),四叉树有一些有意思的特性。第一,四叉树键的长度等于该瓦片所对应的图像级别;第二,每个瓦片的四叉树键的前几位和其父瓦片(上一图像级别所对应的瓦片)的四叉树键相同,下图中,第1级的 '瓦片2' 是第2级的 '瓦片20' 至 '瓦片23' 的父瓦片,第2级的 '瓦片13' 是 第3级的 '瓦片130' 至 '瓦片133' 的父瓦片。通过四叉树的这个特性把3到11级的xyz和11级的xyz建立对应关系表b,最终a和b关联可以得到三到十一级和数据的对应关系。     根据上述内容,我们就可以生成行矢量切片了

CORDIC算法基本原理

▼魔方 西西 提交于 2019-12-02 08:40:31
引言 某些复杂的计算,例如三角函数和除法运算等涉及到大量浮点运算的计算任务,是数字电路天生的瓶颈所在。在某些场景下,可以使用查找表方法或者采用级数展开的方法来实现三角函数等运算功能。但是,这两种方法可能会占用大量的存储资源和硬件乘法计算单元,而想要节省资源,就要以牺牲精度为代价。 相对于前两种方法,CORDIC算法具有很大优势。首先,在计算过程中,它不使用任何的硬件乘法器单元,所涉及的只有移位和累加。然后,对于存储资源的占用,它仅仅需要少量的数据需要预先存储。在实际的数字电路设计中,可以将其设计为流水线方式或者是迭代复用方式,以提高运算速度或者是减少资源占用。 一、矢量旋转公式 CORDIC算法最最基本理论基础,是矢量旋转公式。即矢量 A ( x , y ) A\left( {x,y} \right) A ( x , y ) 顺时针旋转 θ \theta θ 之后,得到的矢量 ( x ′ , y ′ ) \left( {x',y'} \right) ( x ′ , y ′ ) 可以表示为 (式1) : x ′ = x cos ⁡ θ + y sin ⁡ θ , y ′ = y cos ⁡ θ − x sin ⁡ θ . \begin{array}{l} x' = x\cos \theta + y\sin \theta ,\\ y' = y\cos \theta - x\sin

永磁同步电机力矩控制(十):SPWM与SVPWM基础篇

夙愿已清 提交于 2019-12-02 08:05:37
我在IND4汽车人App可以帮助大家汽车电子相关技术问题,欢迎通过IND4汽车人App向我咨询. 在FOC算法(见前文 《永磁同步电机力矩控制(二):FOC与DTC》 )中,针对DQ两轴的PI算法计算出来得到DQ轴电压,经过反PARK变换后可得到α轴和β轴电压,但这些个电压都只是一个计算机里面的数值而已,如何转化成实实在在的加载到电机相线上的端电压,那么就需要用到由电力电子开关器件(MOSFET或IGBT)所组成的驱动桥来实现。 假设控制程序希望电机相线上有一个3V的电压,而电池的供电只有一个稳定的12V,怎样得到这个3V呢?这就是SPWM或SVPWM要干的事情。 PWM的理论依据:冲量等效原理 冲量相等而形状不同的窄脉冲施加在一个惯性环节上,其效果基本相同,如下如所示四种脉冲的电压施加到RL回路上,回路中的电流响应的傅里叶级数展开的低频部分基本相同,高频部分略有区别。 该原理成立的两个条件——窄脉冲和惯性环节缺一不可。“窄”这个概念是相对RL回路的时间常数而言的,如果惯性环节的时间常数是毫秒级,那么这个脉冲起码就要窄到数十个微秒这个数量级;如果惯性环节的时间常数是上百个毫秒,那么这个脉冲窄到几个毫秒也能接受。另外一个是必须有惯性环节存在,这个比较容易理解,如果被控对象是一个纯电阻,无论四种脉冲多么窄,输出电流响应不会基本相同。 这个理论是数学家们搞理论分析搞出来的

永磁同步电机力矩控制(十一):SVPWM进阶篇

倖福魔咒の 提交于 2019-12-02 08:05:09
回顾一下上篇 《SVPWM基础篇》 里我们讲到的SVPWM的基本实现方法,有以下基本结论: (1) SVPWM方式下的电机线-线电压的正弦波峰值可以等于母线电压,母线电压利用率为1 (2) SVPWM的调制比(调制深度)可以达到1.15 调制比计算方法:电压矢量的长度与母线电压一半的比值,如下图 OM向量的长度为 但这个事情就这么完了吗?还真没完。 资本家在压榨工人的剩余价值方面所做的努力是不遗余力的,同样的道理,搞电控的人们在压榨逆变器的潜在能力方面所做的努力有是不遗余力的。 通过上面的图,我们显然可以看到,逆变器本身的最大输入能力是黑色的正六边形的外周围,基础SVPWM所用到的红色内切圆和六边形本身之间的边角料尚未被使用,如果把这一部分电压矢量也使用起来,就是所谓的过调制的SVPWM了。 过调制的实现方式及对输出力矩的影响 一种最为典型的过调制的实现方法是: (1) 当合成电压矢量介于内切圆与六边形之间时,维持合成电压矢量不变 (2) 当合成电压矢量超出六边形时,维持合成电压矢量的方向不变,将按比例拉到六边形上。 典型的应用见下图。 很明显,当过调制发生时,一方面由于最大化的利用了逆变器的潜力,电机的输出功率会增加,另一方面由于其电压矢量不再是一个圆(电机在不同角度下,合成的电压矢量的长度不相同),电压矢量有畸变产生,输出纹波也会增加,仿真见下。 过调制与电流采样 在前文

加载矢量数据的代码优化

一世执手 提交于 2019-12-02 00:08:49
深入来看,依据 ESRI公司数据浏览架构 ,数据打开需要经历以下 流程 : 首先利用新建工作空间工厂的方法打开工作空间;然后强制转换为要素工作空间或者栅格工作空间;最后使用要素工作空间或者栅格工作空间的方法打开(要素/矢量或栅格)数据。 对于ShapeFile来说,工作空间就是它所在的文件夹,打开工作空间需要使用对应的工作空间工厂,即ShapeFileWorkspaceFactoryClass,然后调用IWorkspaceFactory的OpenFromFile方法,就可以得到一个工作空间,这也是设计模式中工厂方法的体现。工作空间工厂的打开方法返回的是一般意义的工作空间,根据具体数据还需要进行接口转换。因为ShapeFile是矢量数据,所以把工作空间接口跳转到IFeatureWorkspace,从而读取其中的要素类。 这一点对于多种格式的数据(如Coverage、GeoDatabase、ArcSDE数据格式)都是一样。 对比代码: 最简单的ArcGIS Engine应用程序(上) private void menuAddShp_Click(object sender, EventArgs e) { IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactory(); IWorkspace pWorkspace1

计算几何基础算法几何C++实现

孤人 提交于 2019-12-01 16:56:12
This file is implementation of Common Common Computational Geometry Algorithms.Please please pay attention to input according to the specified data type. 个人实现的一些计算几何中常见的算法,包括点,线,多边形等;所有算法只依赖于C++标准库,不用包含任何其他第三方库,包含此头文件即可使用。使用时请注意按照规定的数据类型进行输入,目前只使用C++来实现算法,具体算法原理会陆续在Github上更新。 目前实现的算法包括点、向量、线段、直线、三角形、多边形、圆等基本计算几何模型。 // Copyright (C) Common Computational Geometry Algorithms e.U, ZutterHao // // This file is implementation of Common Common Computational Geometry Algorithms. // // Please please pay attention to input according to the specified data type. // // Author: ZutterHao .Nanjing University

MacOS矢量绘图设计工具

生来就可爱ヽ(ⅴ<●) 提交于 2019-11-30 13:21:48
Affinity Designer for Mac是应用在Mac上的一款矢量图设计工具,affinity designer mac版结合了矢量艺术和图层管理以及高质量光栅工具。适用于图标、UI 设计、网站设计、宣传素材等图像的制作,在不切换应用程序的情况下精细设计的能力,这款面向全新的多学科插画师让创意更加闪耀。 功能介绍 完整的图形设计解决方案 Affinity Designer是最快,最流畅,最精确的矢量图形设计软件。从零开始建立了五年,每个功能,工具,面板和功能都是以创意专业人员的核心需求为基础开发的。通过不断的创新和发展,结果是一个突破性的应用程序,将彻底改变您的工作方式。 美丽插图的首选工具 全球专业人士使用它作为矢量插图的首选工具,Affinity Designer继续提升创意软件的标准。精确控制曲线,令人eye目的颜色和起泡性能确保每次都能获得惊人的效果。 耀眼的色彩 颜色是您设计的核心,Affinity Designer成群结队。支持所有主要格式,ICC配置文件和最新的宽色域显示,您知道您的设计将会流行。并且丝般光滑的渐变总是在您的页面上实时更新,您拥有的控制是无限的。 精确的曲线 精确设计的钢笔工具专业地介绍了制作曲线的基本原理 - 结合直观的修改器,它是您创造的一切的主力。交换到节点或实时角落工具允许您重新雕刻,磨练和调整到完美。 刷稳定 一个惊人的附加功能

使用GDAL/GEOS求面特征的并集

核能气质少年 提交于 2019-11-29 17:23:07
存在这样一个示例的矢量文件,包含了两个重叠的面特征: 一个很常见的需求是求取这个矢量中所有面元素的并集,通过GDAL/GEOS很容易实现这个功能,具体代码如下: #include <iostream> #include <gdal/ogrsf_frmts.h> using namespace std; bool WritePolygon(string filePath, OGRPolygon *pOgrMerged) { //创建 GDALDriver* driver = GetGDALDriverManager()->GetDriverByName("ESRI Shapefile"); if (!driver) { printf("Get Driver ESRI Shapefile Error!\n"); return false; } GDALDataset* dataset = driver->Create(filePath.c_str(), 0, 0, 0, GDT_Unknown, NULL); OGRLayer* poLayer = dataset->CreateLayer("houseType", NULL, wkbPolygon, NULL); //创建特征 { OGRFeature *poFeature = new OGRFeature(poLayer-

12. mlab管线控制函数

試著忘記壹切 提交于 2019-11-29 13:55:06
文章目录 官方文档 数据源(Sources) 数据变换(Filters) 实现可视化(Modules) 官方文档 http://docs.enthought.com/mayavi/mayavi/auto/mlab_reference.html 数据源(Sources) Sources 说明 grid_source 建立二维网格数据 line_source 建立线数据 open 打开一个数据文件 scalar_field 建立标量场数据 vector_field 建立矢量场数据 volume_filed 建立体数据 数据变换(Filters) Filters 说明 contour 对输入数据集计算等值面 cut_plane 对数据进行切面计算,可以交互的更改和移动切面 delaunay2D 执行二维delaunay三角化 delaunay3D 执行三维delaunay三角化 extract_grid 允许用户选择structured grid的一部分数据 extract_vector _norm 计算数据矢量的法向量,特别用于在计算矢量数据的梯度时 mask_points 对输入数据进行采样 threshold 取一定阈值范围内的数据 transform_data 对输入数据执行线性变换 tube 将线转成管线数据 实现可视化(Modules) Modules 说明 axes