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

使用Leaflet GeoMan结合天地图进行自由标绘实战

目录

前言

一、Leaflet GeoMan是什么

1、关于Leaflet GeoMan

2、关于开源版和企业版

3、相关的方法介绍

二、使用Geoman来进行自由标绘实战

1、相关资源准备

2、新建html网页

3、初始化地图及绑定Geoman控件

三、自由标绘的成果

1、整体效果

2、添加空间对象

3、开启移动和编辑 

 四、总结


前言

        很多人文类GIS、旅游类GIS,通常会采用WebGIS的方式想公众、游客来介绍当前用户感兴趣的地理信息。同时为了增加交互的趣味性,在这类人文类的GIS应用中,不仅可以支持底图的在线加载,同时还可以支持用户自主的来编辑或设置一些标绘,把一些用户自己感兴趣的空间位置信息进行图上标绘,类似于涂鸦的概念,通过这种交互性提高用户的使用欲望,从而让系统和用户结合得更好。而一些历史类的WebGIS应用也会有类似的需求,比如描述某个人物的一生,除了搜集可以获取到的位置信息,还可以基于互联网,自动关联一些感兴趣的位置、面、范围、矩形、多边形等空间信息与人物进行关联,来辅助进行说明目标任务的一生。

        类似于上面的这种操作界面,它支持各种不同的空间对象的创建和编辑,比如点、线、矩形、多边形、圆、圆点,文本标注等,同时还支持对空间对象的移动、剪切、删除、旋转等操作。用户只需要组织好自己的场景,然后基于WebGIS进行场景的创作。就像编剧一样,把各种人物按照一定的关系和出场顺序组织好,让他们依次粉墨登场。在以往的WebGIS应用开发中,我们采用的都是Leaflet.js。因此在这里,我们要想实现各种空间对象的编辑和管理,依然决定在Leaflet的可视化展示组件上来进行开发。

        本文即在这样的需求背景下诞生,首先讲解基于Leaflet开发的一个Leaflet GeoMan组件,介绍这个组件是什么,有哪些特色功能,然后介绍如何在工程中使用这些组件,最后在以一个实际的案例来实现之前我们提出来的场景。通过本文,您不但可以了解什么是Leaflet geoMan,还可以掌握它的基本用法,了解如何创建第一个基本应用,最后学会如何在WebGis界面中进行自由标绘。掌握GIS,用GIS来表达,用GIS来讲故事,从这里开始。

一、Leaflet GeoMan是什么

        本节依然来重点讲解Leaflet Geoman是什么?究竟这个组件能做些什么,它有哪些特别之处呢?在使用的时候,有哪些方法可以使用呢?这些内容都将在本节给出答案。

1、关于Leaflet GeoMan

        首先,我们来看一下在GitHub上,关于Leaflet GeoMan这个项目的简要介绍,感兴趣的朋友可以在GitHub上来查找它的源码。从而更加了解它的代码编写和设计思路。传送门。

         可以看到,在github上面,leaflet-geoman这个项目的start 数已经有2.1k,作为一个前端组件,尤其是面向webgis的前端组件,非常厉害了。下面我们结合它的官网资料来进行一些简要介绍。让您提前了解一些知识。

        首先看得到的是,这个项目的开源协议采用的MIT协议,这个协议是非常宽松的协议。首先来看一下这个项目的主要介绍。

          The most powerful leaflet plugin for drawing and editing geometry layers。Leaflet Plugin For Creating And Editing Geometry Layers Draw, Edit, Drag, Cut, Rotate, Split, Scale, Measure, Snap and Pin Layers Supports Markers, CircleMarkers, Polylines, Polygons, Circles, Rectangles, ImageOverlays, LayerGroups, GeoJSON, MultiLineStrings and MultiPolygons。

        上述文字是在其官网上的详细内容介绍,翻译成中文就是:用于绘制和编辑几何图层的最强大的Leaflet插件。用于创建和编辑几何图层的Leaflet插件绘制、编辑、拖动、剪切、旋转、分割、缩放、测量、捕捉和固定图层支持标记、圆标记、折线、多边形、圆、直角、图像叠加、图层组、GeoJSON、多线串和多多边形。从以上内容可知,其是针对Leaflet的一种扩展。

2、关于开源版和企业版

        虽然这款软件是开源的,但是其还是有开源版和企业版的区别,关于这两个版本的主要差别,在Leaflet-geoman的官方文档上有简要的说明。与市面上大多数的软件一致,企业版的功能比开源版的要多一些,这也是正常的。企业版(pro)版的功能要比开源版强大一些。如果您在平时的工作中确实需要这些新特性,那不妨去支持一下这个项目。企业版的不同之处主要分几个方面,第一个方面是企业版支持的模式多一些,如下图所示:

        上图红色框中的就是企业版独有的Mode,在开源版中没有。 当然,除了Mode的区别之外,在Options配置方面也是有一些区别。

        在实际的项目中,在引入Leaflet-geoman资源时,需要注意不同的版本的选择,开源版的资源引入使用如下所示:

<linkrel="stylesheet"href="https://unpkg.com/@geoman-io/leaflet-geoman-free@latest/dist/leaflet-geoman.css"
/>

        同时还要引入javascript(请注意,这里使用的是free版本):

<script src="https://unpkg.com/@geoman-io/leaflet-geoman-free@latest/dist/leaflet-geoman.js"></script>

        企业版的相关资源引入,需要申请key等令牌后才能访问。

3、相关的方法介绍

        除了介绍怎么下载geoman项目,还介绍了这个项目的两个不同版本区别,最后还是回归到技术来,就是geoman这个项目的相关方法和属性怎么去设置,工具栏的配置方法是什么?这里将重点介绍一下。首先来介绍一下工具栏的配置,在Leaflet界面中,要想触发编辑或者新增,都需要在工具栏上来统一出发。因此首先介绍工具栏的配置。工具栏的参数如下:

MethodReturnsDescription
addControls(options)-Adds the Toolbar to the map. The options are optional. Buttons can be removed with setting them to false.
removeControls()-Removes the Toolbar from the map.
toggleControls()-Toggle the visiblity of the Toolbar.
controlsVisible()BooleanReturns true if the Toolbar is visible on the map.

        然后我们具体来看下options这个配置参数具体有哪些?

OptionDefaultDescription
position'topleft'Toolbar position, possible values are 'topleft''topright''bottomleft''bottomright'
positionsObjectThe position of each block (draweditcustomoptions⭐) can be customized. If not set, the value from position is taken. Default: {draw: '', edit: '', options: '', custom: ''} Block Position
drawMarkertrueAdds button to draw Markers.
drawCircleMarkertrueAdds button to draw CircleMarkers.
drawPolylinetrueAdds button to draw Line.
drawRectangletrueAdds button to draw Rectangle.
drawPolygontrueAdds button to draw Polygon.
drawCircletrueAdds button to draw Circle.
drawTexttrueAdds button to draw Text.
editModetrueAdds button to toggle Edit Mode for all layers.
dragModetrueAdds button to toggle Drag Mode for all layers.
cutPolygontrueAdds button to cut a hole in a Polygon or Line.
removalModetrueAdds a button to remove layers.
rotateModetrueAdds a button to rotate layers.
oneBlockfalseAll buttons will be displayed as one block Customize Controls.
drawControlstrueShows all draw buttons / buttons in the draw block.
editControlstrueShows all edit buttons / buttons in the edit block.
customControlstrueShows all buttons in the custom block.
optionsControlstrueShows all options buttons / buttons in the option block ⭐.
pinningOptiontrueAdds a button to toggle the Pinning Option ⭐.
snappingOptiontrueAdds a button to toggle the Snapping Option ⭐.
splitModetrueAdds a button to toggle the Split Mode for all layers ⭐.
scaleModetrueAdds a button to toggle the Scale Mode for all layers ⭐.
autoTracingOptionfalseAdds a button to toggle the Auto Tracing Option ⭐.
snapGuidesOptiontrueAdds a button to toggle the SnapGuides Option ⭐.

        请注意,上面的配置选项中,标红色的是企业版采用的功能,如果是用开源版,不用管这些参数即可。篇幅有限,类似于这种设置,大家可以参考管网来进行合理配置,说明文档。其它的文档说明不再进行赘述。

二、使用Geoman来进行自由标绘实战

        在大致掌握了Geoman是什么?它的功能是什么?究竟geoman是怎么来操作空间图形对象的呢。在实际开发中,我们怎么进行代码的编写呢。本节主要说明上面的需求实现,主要是采用实际的工程代码编写的方式。通过本节掌握如何进行geoman可编辑代码的编写。

1、相关资源准备

        在进行geoman自由标绘的时候,我们首先将需要的资源准备好。由于使用的Leaflet组件,因此我们将Leaflet需要的css和javascript文件拷贝到资源目录中。关于geom依赖的css和javascript,在前面的内容中有所涉及。

        再来看一下dist文件夹中的包含哪些文件:

         leaflet相关的css和javascript文件请从leaflet相关网站上下载即可。

2、新建html网页

        然后在文件夹中新建一个index.html文件,在这个文件中引入相关的资源,包括leaflet和geoman的css样式文件和javascript脚本文件。文件内容如下:

<!DOCTYPE >
<html lang="zh"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1" /><title>Leaflet Geoman 在线标绘实战</title><link rel="stylesheet" href="./dist/leaflet.css"/><link rel="stylesheet" href="./dist/leaflet-geoman.css" /><link rel="stylesheet" href="demo.css" /></head><body><div class="wrapper"><article><h2> Leaflet Geoman 在线标绘实战</h2><div class="map" id="map"></div></article></div><script src="./dist/leaflet.js"></script><script src="./dist/leaflet-geoman.js"></script><script src="demo.js?t=3"></script></body>
</html>

3、初始化地图及绑定Geoman控件

        在创建index.html文件,同时引入了leaflet和geoman这两个组件的相关资源后,我们来实际的设置具体的控制组件。首先绑定地图容器,同时设置加载的瓦片底图的地址,这里使用天地图的图源,大家在实际展示时,需要先将tdt的tk进行替换,或者直接将地图换成其它的图源。

/* eslint-disable no-console */
const tiles = L.tileLayer('http://t0.tianditu.gov.cn/img_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=you key', {maxZoom: 18,attribution:'&copy; <a href="hhttps://www.tianditu.gov.cn/">在线图源使用国家天地图</a> contributors',
});const map = L.map('map').setView([51.505, -0.09], 13).addLayer(tiles);

        然后开启工具栏绑定,具体要开启的设置见官网说明,关键代码如下:

layerGroup.pm.toggleEdit({draggable: true,snappable: true,snapDistance: 30,
});

        最后将组件绑定到地图中,这里是将工具栏放置到右上方的位置,关键代码如下所示:

map.pm.addControls({position: 'topright',
});

        到此,已经完成了地图组件的初始化,geoman控件的绑定和渲染展示设置等。

三、自由标绘的成果

        本节以自由标绘的成果为例,主要说明在界面中如何进行使用。因此这里是交作业被检查的时候。

1、整体效果

        首先来看一下整体的效果,我们默认还设置了一些初始化的空间对象,比如线、面还有geojson类型的数据,让大家对主动加载数据有一个直观的了解。

const layerGroupItem1 = L.polyline([[51.51, -0.09],[51.513, -0.08],[51.514, -0.11],],{ pmIgnore: true }
);
const layerGroupItem2 = L.polygon([[51.52, -0.06],[51.51, -0.07],[51.52, -0.05],
]);
const layerGroupItem3 = L.polygon([[51.51549835365031, -0.06450164634969281],[51.51944818307178, -0.08425079345703125],[51.51868369995795, -0.06131630004205801],[51.51549835365031, -0.06450164634969281],
]);
const feature = {type: 'Feature',properties: {},geometry: {type: 'Polygon',coordinates: [[[72.839012, 19.058873],[72.92038, 19.066985],[72.856178, 19.019928],[72.839012, 19.058873],],],},
};
const layerGroup = L.featureGroup([layerGroupItem1]).addTo(map);

         上图是初始化展示的自由标绘底图,同时加载了几个待编辑的空间对象。

2、添加空间对象

        这里主要演示添加线、面、矩形、范围、多边形、文本标记、原型等空间对象。

3、开启移动和编辑 

        在右边的工具条中,不仅可以添加新的空间对象,同时还可以对整体信息进行编辑,比如剪切、平移、旋转等操作。直接使用鼠标点击工具栏即可完成对应的设置。当打开编辑窗口时,可以拖动关键点进行图形的位置修正。

        下面是一张我们绘制的模拟城市功能区位置示意图 

 四、总结

        以上就是本文的主要内容,本文首先讲解基于Leaflet开发的一个Leaflet GeoMan组件,介绍这个组件是什么,有哪些特色功能,然后介绍如何在工程中使用这些组件,最后在以一个实际的案例来实现之前我们提出来的场景。通过本文,您不但可以了解什么是Leaflet geoMan,还可以掌握它的基本用法,了解如何创建第一个基本应用,最后学会如何在WebGis界面中进行自由标绘。行文仓促,定有不足之处,如有不当或者需要补充的地方,还行各位专家和朋友在评论区留言指正,鄙人不胜感激。

相关文章:

使用Leaflet GeoMan结合天地图进行自由标绘实战

目录 前言 一、Leaflet GeoMan是什么 1、关于Leaflet GeoMan 2、关于开源版和企业版 3、相关的方法介绍 二、使用Geoman来进行自由标绘实战 1、相关资源准备 2、新建html网页 3、初始化地图及绑定Geoman控件 三、自由标绘的成果 1、整体效果 2、添加空间对象 3、开…...

Flutter自定义通用防抖的实现

在前端项目开发中&#xff0c;点击事件的防抖是一个永远无法错开的点&#xff0c;特别是针对一些复杂的业务场景&#xff0c;如果不做好防抖操作&#xff0c;就会导致页面或功能触发多次&#xff0c;引发异常或闪退。 在Flutter中可以通过扩展函数的特性 对Function增加全局扩…...

C# Unity 面向对象补全计划 之 继承(字段与属性)

本文仅作学习笔记与交流&#xff0c;不作任何商业用途&#xff0c;作者能力有限&#xff0c;如有不足还请斧正 本系列旨在通过补全学习之后&#xff0c;给出任意类图都能实现并做到逻辑上严丝合缝 Q&#xff1a;为什么要单讲继承字段与属性&#xff0c;不讲继承方法了吗&#x…...

leetcode202. 快乐数,双指针法巧用

leetcode202. 快乐数 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为&#xff1a; 对于一个正整数&#xff0c;每一次将该数替换为它每个位置上的数字的平方和。 然后重复这个过程直到这个数变为 1&#xff0c;也可能是 无限循环 但始终变不到 1。 如果这个过程…...

基于Cobbler实现多版本系统批量部署

一、实验题目 基于Cobbler实现多版本操作系统的批量部署。 二、实验目的 掌握Cobbler服务器的安装与配置方法。 学会使用Cobbler进行多版本操作系统的批量部署。 理解PXE网络启动原理及其在操作系统部署中的应用。 提高在实际生产环境中快速部署和管理操作系统的能力。 …...

一投就中不是梦,录取率>80%,最快1个月就见刊,计算机沾边就收,认可度还不低

本次模术狮精心整理5本期刊&#xff0c;最快1个月就见刊&#xff0c;计算机沾边就收&#xff0c;认可度还不低&#xff01; 1 Knowledge-Based Systems ▲ 图片来源&#xff1a;Knowledge-Based Systems官网 期刊简介&#xff1a;《Knowledge-Based Systems》是人工智能领域的…...

【课程系列06】某乎AI大模型全栈工程师-第6期

网盘链接 链接&#xff1a;https://pan.baidu.com/s/1QLkRW_DmIm1q9XvNiOGwtQ --来自百度网盘超级会员v6的分享 课程目标 【知乎大模型课程】学习的四个维度 &#x1f449;指挥层&#xff1a;学高阶指令工程 AI编程等&#xff0c;指挥大模型完成90%代码任务&#xff0c;包…...

Prompt——3分钟掌握,润色论文的7条经典指令。帮助很大,一定要看!

这是一篇帮助你润色论文的ChatGPT指令合集&#xff0c;整理了润色过程中语法优化、审阅校对、专业风格等7个主要方面。 建议收藏&#xff0c;需要的时候直接CtrlV即可&#xff0c;一定对你科研有所帮助~ 1. 修复语法和句法 第一个提示是修复语法和句法。这是任何写作的关键部…...

ARM学习(31)编译器对overlay方式的支持

ARM学习&#xff08;31&#xff09;编译器对overlay方式的支持 1、overlay介绍 overlay&#xff1a;重叠得意思&#xff0c;就是可以重复利用得空间&#xff0c;一般在内存上使用这种空间。比如以Windows操作系统为例&#xff0c;其存储空间&#xff08;ROM/FLASH&#xff09;…...

【YashanDB知识库】yasdb jdbc驱动集成BeetISQL中间件,业务(java)报autoAssignKey failure异常

问题现象 BeetISQL中间件版本&#xff1a;2.13.8.RELEASE 客户在调用BeetISQL提供的api向yashandb的表中执行batch insert并将返回sequence设置到传入的java bean时&#xff0c;报如下异常&#xff1a; 问题的风险及影响 影响业务流程正常执行&#xff0c;无法获得batch ins…...

软件测试——用例篇(上)

概念 什么是测试⽤例&#xff1f; 测试⽤例&#xff08;Test Case&#xff09;是为了实施测试⽽向被测试的系统提供的⼀组集合&#xff0c;这组集合包含&#xff1a;测试环境、操作步骤、测试数据、预期结果等要素 设计测试⽤例原则⼀&#xff1a; 测试⽤例中⼀个必需部分是对…...

Flink中三种模式:YARN Session 模式、YARN Per-Job 模式和 YARN Application 模式提交任务命令

在 Apache Flink 中,YARN 提供了多种模式来提交和管理作业,每种模式都有其独特的特点和适用场景。主要有以下三种模式:YARN Session 模式、YARN Per-Job 模式和 YARN Application 模式。 1. YARN Session 模式 在 YARN Session 模式中,一个长时间运行的 Flink 会话(Sess…...

DBMS-1.2 关系运算

本文章的素材与知识均来自于李国良老师的数据库管理系统课程。 关系代数 一.基本关系代数运算 基本关系代数运算包括&#xff1a;选择、投影、并、差、笛卡尔积、重命名。 1.选择&#xff08;select&#xff09; 选择运算用于从关系R中获取满足条件的元组。 &#xff08;1…...

Python——继承

一、继承 1. 什么是继承&#xff1f; 继承是一种面向对象编程的机制&#xff0c;允许一个类&#xff08;子类&#xff09;从另一个类&#xff08;父类&#xff09;继承属性和方法。子类可以扩展或修改父类的功能。 2. 如何实现继承&#xff1f; 在Python中&#xff0c;实现…...

程序员转型AI大模型好转吗?成功率高吗?

前言 在程序员圈子中&#xff0c;技术转型近年来一直是热门话题。随着AI技术的迅猛发展&#xff0c;优秀人才短缺&#xff0c;程序员向AI大模型转型似乎成为了一条通往职场先机的路径。但是&#xff0c;这条转型之路是否容易走&#xff0c;成功率又如何呢&#xff1f; 一、程…...

关于 Postman 这些你都知道吗?

Postman是接口测试工具&#xff0c;在做接口测试的时候&#xff0c;Postman相当于一个客户端&#xff0c;它可以模拟用户发起的各种http请求&#xff0c;将请求的数据发送到服务端&#xff0c;获取对应的结果&#xff0c;从而测试接口是否能够满足业务功能要求&#xff0c;很直…...

ReentrantLock

ReentrantLock ReentrantLock 是一个可重入的互斥锁&#xff0c;它提供了比 synchronized 关键字更灵活的锁机制。它属于 java.util.concurrent.locks 包。 特点&#xff1a; 可重入性&#xff1a;同一个线程可以多次获取锁而不会造成死锁&#xff0c;锁的计数器会递增。公平…...

python | TypeError: list indices must be integers or slices, not tuple

python | TypeError: list indices must be integers or slices, not tuple 在Python编程中&#xff0c;TypeError: list indices must be integers or slices, not tuple 是一个常见的错误。此错误通常发生在尝试使用非整数&#xff08;如元组&#xff09;作为列表索引时。本…...

链码简介及MATLAB提取彩色图像链码

一、链码 链码&#xff08;又称为freeman code&#xff09;是一种通过带有给定方向的单位长度的线段序列来描述轮廓边界的方法,常被用来在图像处理、计算机图形学、模式识别等领域中表示曲线和区域边界。在二维图像中&#xff0c;链码可以表示为一系列的方向码&#xff0c;每个…...

二叉树,二叉查找树,平衡二叉树

一.绪论: 二.数据结构(二叉树): 1.简介: 1)每一个节点&#xff08;也叫结点&#xff09;都是一个独立的对象-->当中不仅要存数据值&#xff0c;还要存父节点地址值&#xff0c;左子节点地址值&#xff0c;右子 节点地址值 2)没有父节点或者子节点的节点就记为null 2.遍历方…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)

2025年能源电力系统与流体力学国际会议&#xff08;EPSFD 2025&#xff09;将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会&#xff0c;EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略&#xff0c;并且实现了基本的选区操作&#xff0c;还调研了自绘选区的实现。那么相对的&#xff0c;我们还需要设计编辑器的选区表达&#xff0c;也可以称为模型选区。编辑器中应用变更时的操作范围&#xff0c;就是以模型选区为基准来…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

c++第七天 继承与派生2

这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分&#xff1a;派生类构造函数与析构函数 当创建一个派生类对象时&#xff0c;基类成员是如何初始化的&#xff1f; 1.当派生类对象创建的时候&#xff0c;基类成员的初始化顺序 …...