开源WebGIS全流程常用技术栈

1 数据生产

1.1 uDig

uDig(http://udig.refractions.net/)是一个基于Java开源的桌面应用框架,它构建在Eclipse RCP和GeoTools(一个开源的Java GIS包)上。可以进行shp格式地图文件的编辑和查看;是一个开源空间数据查看器/编辑器,对OpenGIS标准,关于互联网GIS、网络地图服务器和网络功能服务器有特别的加强。uDig提供一个一般的java平台来用开源组件建设空间应用。开发者可通过这个平台来创建新的在uDig 基础上衍生的应用程序,uDig 是WebGIS 的一个核心组件。Geotools 是一个开源的Java GIS 工具包,可利用它来开发符合标准的地理信息系统。Geotools 提供了OGC( Open Geospatial Consortium) 规范的一个实现来作为他们的开发。

uDig支持WMS,WFS,WPS等GIS服务,同时提供了丰富的地图数据编辑功能,包括点、线、面和图片形式的编辑。但实际上应用最多的就是使用uDig编辑shp格式的地图数据,从中提取作用域地图发布的样式文件(*。sld)。通常使用默认文字编码的地图数据通过WMS服务显示处的地图中文标签是乱码。用uDig导出shp格式地图数据的SLD样式文件,可以有效的解决中文标签乱码问题。

官网:http://udig.refractions.net/

下载地址:http://udig.refractions.net/download/

udig下载、安装及汉化

1.2 QGIS

QGIS(https://www.qgis.org/zh_CN/site/)全称Quantum GIS,基于Qt,使用C++开发的开源版桌面地理信息系统。该系统可运行在Linux、Unix、Mac OSX和Window等平台之上。QGIS最大的特点是它把图层当做数据处理的最基本单位,实际上它支持的图层具有很广泛的来源,主要有矢量文件图层、CAD图层、影像数据图层和WMS图层。QGIS 支持vector, raster 和database 格。它能够很好地支持PostGIS。目前最新版本更新到3.10.2。

1.3 QGIS和uDig的比较

2 数据存储

2.1 PostgreSQL

PostgreSQL(对象-关系数据库管理系统)是由加州大学伯克利分校计算机系开发的Postgres软件包发展而来的。PostgreSQL几乎支持所有SQL构件(包括子查询,事物和用户定义类型和函数),并且可以获得非常广阔范围的开发语言绑定(包括C,C++,Java,Perl,tcl,和Python)。在空间数据管理方面, PostgreSQL定义了一系列的几何数据类型, 包括点(point),线(line),线段(lseg), 方形(box), 闭合和开放路径(path),多边形(polygon), 圆(circle)。但是PostgreSQL提供的几何类型并不支持OpenGIS的SFS规范, 缺乏复杂几何类型, 没有提供空间分析和投影变换模块, 很难达到GIS的应用要求。

2.2 PostGIS

PostGIS(http://www.postgis.org/)是一个功能强大的开源空间数据库。它是在1986年诞生于加州大学伯克利分校。PostGIS是PostgreSQL(对象-关系型数据库管理系统)的一个扩展。它支持所有的空间数据类型与一系列重要的GIS 函数,包括完全的OpenGIS 支持、拓扑结构和用于查看、编辑GIS 数据桌面用户相关工具和基础网络访问工具。作为PostgreSQL对象关系数据库系统的扩展模块,PostGIS 支持GIS 空间数据的存储,PostGIS 遵循OGC 的Simple Feature for SQL。PostGIS在PostgreSQL基础上增加了存储空间数据的能力,与Oracle中Spatial相似。PostGIS也具有大型数据库的特性,如数据备份,数据库恢复,灾难恢复等。

PostGIS支持所有的空间数据类型,这些类型包括:点(POINT)、线(LINESTRING)、 多边形(POLYGON)、多点(MULTIPOINT)、 多线(MULTILINESTRING)、 多多边形(MULTIPOLYGON)和集合对象集(GEOMETRYCOLLECTION)等。PostGIS支持所有的对象表达方法,比如WKT和WKB。PostGIS支持所有的数据存取和构造方法,如GeomFromText()、AsBinary(),以及GeometryN()等。PostGIS提供简单的空间分析函数(如Area和Length)同时也提供其他一些具有复杂分析功能的函数,比如Distance。PostGIS提供了对于元数据的支持,如GEOMETRYCOLUMNS和SPATIAL REF SYS,同时,PostGIS也提供了相应的支持函数,如AddGeometryColumn和DropGeometryColumn。PostGIS提供了一系列的二元谓词(如Contains、Within、Overlaps和Touches)用于检测空间对象之间的空间关系,同时返回布尔值来表征对象之间符合这个关系。PostGIS提供了空间操作符(如Union和Difference)用于空间数据操作。比如,Union操作符融合多边形之间的边界。两个交迭的多边形通过Union运算就会形成一个新的多边形,这个新的多边形的边界为两个多边形中最大边界。

2.3 PostGIS与PostgreSQL的对比

总的来说PostGIS相当于PostgreSQL的升级版,在此基础上完善了空间分析操作以及更复杂的几何量算。

2.4 MySQL

MySQL(https://www.mysql.com/)是一种小型关联数据库管理系统。这种数据库的最大特点是,它将数据保存在不同的数据表中,而不是将全部的数据都存放在仓库中,这样提高了数据库的灵活性,增加了查询的速度。它现在同样支持空间扩展,该数据库能够生成、保存及分析空间特征,它使用了OGC建议的含有Geometry类型的,负荷SQL语句环境的一个自己,提供了一组对空间数据实现很多操作的函数,这些函数可以在各种格式间转换几何值,并且访问几何值的定性或定量等属性信息。开发者为瑞典MySQLAB公司。该公司在2008年被Sun公司收购。

MySQL是完全网络化的跨平台关系型数据库,因为其体积小、速度快、总体拥有成本低,且开放源码,被广泛的应用于Internet上的中小型网站中。

 MySQL Spatial Extensions 地理信息

 http://mysqlserverteam.com/mysql-5-7-and-gis-an-example/

  1. MySQL Spatial Extensions(后面简称MySQL Spatial)功能不够完全。至少和PostGIS相比是这样的,它只支持了openGIS(一个标准)的一个子集,包涵有限的几种空间数据类型(比如Point,LineString,Polygon等),支持的函数也很少,比如,连计算两个点的distance函数都没有...
  2.  MySQL Spatial的安装配置非常的简单。其实,它根本不需要安装。默认的MySQL配置就能够使用这些空间数据类型。这和PostGIS很不一样,PostGIS是需要在PostgreSQL上再安装一个扩展包。
  3.  不同的存储引擎有差别。MyISAM和InnoDB都支持spatial extensions,但差别在于:如果使用MyISAM,可以建立spatial index,而InnoDB是不支持的。这点差别在某些场景下很关键,后面会再详细说说spatial index。

2.5 MongoDB

MongoDB(https://www.mongodb.com/)是一个开源面向文档的NoSQL 数据库,用C++编写。它提供一种强大、灵活、可扩展的数据存储形式。MongoDB功能丰富,内置MapReduce聚合的支持,支持地理空间索引。MongoDb具有弱一致性,保证用户的访问速度,文档结构的访问方式,能够更便捷地获取数据,内置GirdFS 支持大容量的储存,内置Sharding,第三方支持丰富,性能优越。

MongoDB在存储空间数据比传统的关系数据库如MySQL 和PostgreSQL 更具优势。MongoDB 对空间数据是原生支持,不需要安装第三方空间数据库引擎即可构建空间索引进行进行快速的空间查询。MongoDB 支持平面( 2d) 和球面( 2dsphere indexes) 两种空间索引。面向大众型的GIS 应用会存储大量的POI 数据或者用户产生的位置数据,利用MongoDB 储存可以提高检索效率。MongoDB 支持MapReduce计算模型,处理海量LBS数据有较高的效率。MongoDB有多种基于的Node.JS的第三方库实现对MongoDB的操作,这样使得对数据的操作更加的便捷。

MongoDB 中使用 GeoJSON对象 或 坐标对 描述空间地理数据。MongoDB使用 WGS84 参考系进行地理空间数据查询。

1、MongoDB支持空间数据的存储,数据类型需要限制为GeoJSON;

2、MongoDB可以为GeoJSON类型数据建立索引,提升空间查询的效率;

在高负载的情况下,添加更多的节点,可以保证服务器性能。

MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

2.6 PostGIS、MySQL和MongoDB的比较

总的来说,PostGIS对GIS原生支持的最多;MySQL胜在速度快,体积小但并不是所有功能都免费;MongoDB处理数据快,适用于大数据级别的数据处理,在弱GIS应用中或简单的LBS应用中有天然的优势。

3 GIS服务

3.1 GeoServer

GeoServer(http://geoserver.org/)是一个遵守OGC开放标准的开源地图服务器,它支持J2EE规范,且实现了WCS、WMS(网络地图服务)及WFS(网络要素服务)规格,支持TransactionWFS(WFS-T),其技术核心是整合了颇负盛名的JavaGISolkit--GeoTools。对于空间信息存储,它支持ESRI Shapefile及PostGIS、Oracle、ArcSDE等空间数据库,输出的GML档案满足GML2.1的要求。由于它是纯Java的,所以更适合于复杂的环境要求,而且由于它的开源,所以开发组织可以基于GeoServer灵活实现特定的目标要求,而这些都是商业GIS组件所缺乏的。GeoServer作为一个纯粹的Java实现,被部署在应用服务器中,简单的如Tomcat等;它的WMS和WFS组件响应来自于浏览器或uDig的请求,访问配置的空间数据库,如PostGIS、OracleSpatial等,产生地图和GML文档传输至客户端。

具有以下优点:

1) 用 java 语言编写、标准的 J2EE 框架、基于 servlet和STRUTS 框架、 支持高效的 Spring 框架开发;

2) 兼容 WMS 和 WFS 特性、支持 WFS-T 规范;

3) 高效的数据库支持 PostGIS、ShapeFile、ArcSDE,Oracle、MySQL 等;

4) 支持上百种投影;

5) 能够将网络地图输出为 jpeg、gif、png 、SVG、GML、KML等格式;

6)能够运行在任何基于J2EE/servle框架之上;

7)嵌入MapBuilder支持AJAX的地图客户端

8)实现了在线编辑空间数据、生成专题地图;

9)地图发布是用XML文件。

10)支持Goodgle Maps;

11)可发布KML数据,可与GoogleEarth影像叠加。

3.2 MapServer

MapServer(https://mapserver.org/) 源自美国太空总署(NASA)资助的美国明尼苏达大学(University of Minnesota)ForNet项目,最终衍生为一个WebGIS开源软件,是一个功能强大的跨平台的网络地图服务软件包, 可以应用于UNIX/Linux, Windows, MacOSX, Solaris等平台,支持的语言包括 Python,PHP,Perl,Java,Tcl,C# 等。MapServer使用几个知名的开放源代码软件完成数据格式转换、地图投影转换、空间数据库的大数据量处理等, 而本身专注于地图绘制、地图图形格式、接口环境、兼容OGC互操作规范等方面。

MapServer具有强大的空间数据的网络发布功能,支持多种数据格式,使得在WebGIS 中整合空间数据和非空间数据变得更加容易。MapServer是基于胖服务器/瘦客户端模式开发的 WebGIS 平台。主要是因为处理空间数据的任务主要在服务器端完成,在通过客户端发送请求的时候,服务器依据客户端请求,执行相应的操作并返回数据,客户端将数据处理显示返回用户。它的核心模块主要是通过C语言编写完成,提供了两种开发模式,一种是基于CGI的,另一种是MapScript方式; 在服务器端可以使用任一模块,编写WebGIS程序。它遵守OGC制定的WMS、WFS、WCS和GML等一系列规范,支持分布式访问和互操作。MapServer作为WebGIS解决方案是基于对象的,基本配置文件 MapFile 和 MapScript 模块的API组织都是基于对象的。

MapServer简介 — MapServer 7.6.4 documentation

MapServer是一个流行的开源项目,其目的是通过Internet显示动态空间地图。它的一些主要功能包括:

    支持显示和查询数百种栅格、矢量和数据库格式

    能够在各种操作系统(Windows、Linux、Mac OS X等)上运行。

    支持流行的脚本和开发环境(PHP、Python、Perl、Ruby、Java、.NET)

    飞行中的投射

    高质量渲染

    完全可自定义的应用程序输出

    许多现成的开源应用程序环境

在最基本的形式中,mapserver是 CGI 在Web服务器上处于非活动状态的程序。当请求发送到MapServer时,它使用请求URL中传递的信息和 Mapfile 创建所请求地图的图像。请求还可以返回图例、比例尺、参考地图和作为CGI变量传递的值的图像。

3.3 MapProxy

MapProxy(https://mapproxy.org/)是 WMS 网页地图服务与切片服务提供者的瑞士军刀。它对已有地图服务的数据服务进行缓存、加速和转换,服务任何支持 OGC 标准的桌面与网页客户端。 MapProxy 开发与部署方式灵活,易于同 Apache/Nginx 环境等集成。MapProxy 也能作为一个独立服务器使用,这是对于新用户而言最容易的方式。  MapProxy 的默认示例是一个基本的 WMS 切片客户端,它显示了配置的各个图层;不具备改变投影等复杂功能,但足以验证服务是否正常运行。

3.4 MapServer和GeoServer的总体对比

先看历史悠久产品成熟的MapServer。Mapserver在国内用户广泛,其内核使用C++编写,基于CGI脚本实现,页面调用支持PHP、JSP等多种语言,并且对OGC的WMS和WFS规范提供支持。Map文件是Mapserver工程中关键的结构配置文件,定义了地图范围、数据源、地图图层、投影方式以及符号标记等内容。如果在Linux平台下快速配置MapServer地图服务器,使用Maptools发布的 FGS(FOSS GIS Suite)套件无疑是最佳方案,套件集成了整套的MapServer、Apache、PHPMapScript以及GDAL库等众多内容,并且提供安装后就可直接浏览的地图DEMO。

再看GeoServer,基于Java和Geotools库开发的Geoserver功能全面且遵循OGC开放标准,并由同时拥有PostGIS与uDig的Refractions公司提供支持。GeoServer对发布WFS-T和WMS服务提供便捷的支持,并以XML文件描述所有地图服务,同时即将加入的FROGS(Framework for Open Geospatial Services)项目将着重提供对WPS规范的支持。GeoServer的开发组很活跃,邮件咨询的问题很快会得到Jody Garnett和组内其他成员的回复。

比较来说,Mapserver对WMS的支持更为高效,而Geoserver则更擅长于结合WFS规范的属性查询。当然,对于使用者来说,最主要的区别还是传统CGI脚本与J2EE在技术上的分歧。但就发展趋势来看,J2EE的架构明显要占据优势,并且Geoserver拥有基于Eclipse RCP平台的开源客户端uDig。随着Geoserver的版本更新,相信其有实力成为今后开源WebGIS解方案的主流选择。

总的来说,功能上:MapServer弱于GeoServer。效率上:Mapserver对WMS(Web Map service)的支持更为高效,而Geoserver则更擅长于结合WFS(Web Feature service)规范的属性查询。
详细见下表:

4 Web服务

4.1 Apache

Apache(https://www.apache.org/)是目前世界使用排名第一的Web服务器。根据Web服务器调查公司Netcrafe调查, 全Internet有50%以上的Web服务器都在使用Apache。1995 年4月, 最早的Apache(0.6.2 版)由ApacheGroup公布发行。Apache Group是一个完全通过Internet进行运作的非盈利机构,由它来决定ApacheWeb服务器的标准发行版中应该包含哪些内容。准许任何人修改隐错, 提供新的特征和将它移植到新的平台上, 以及其他的工作。Apache的特点是简单、速度快、性能稳定, 可以运行在几乎所有广泛使用的计算机平台上, 并可做代理服务器来使用。Apache是Linux主流的服务器, 为Linux的迅速繁荣立下了汗马功劳。

4.2 Node.js

Node.js(https://nodejs.org/) 是一个让JavaScript 运行在服务端的开发平台,Node.js基于Chrome的V8引擎,V8引擎是Google公司使用C++开发的高性能JavaScript引擎,可以在多种环境下使用。使用V8引擎的Node.js让作为前端开发语言的Javascript能够自由运行在服务器环境下。Node.js借助事件驱动,非阻塞I/O 模型变得轻量和高效,非常适合运行在分布式设备的数据密集的实时应用。Node.js 自2009年出现一直备受关注,开发社区庞大、数以万计的第三方模块为构建网络程序提供了很大便捷。

4.3 Tomcat

Tomcat(http://tomcat.apache.org/) 是Apache 软件基金会( Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache,Sun和其他一些公司及个人一块开发而成。由于有了Sun 的参与与支持,最新的Servlet 与JSP 规范总是能在Tomcat中得到完美体现,Tomcat 5 支持最新的Servlet 2.4 与JSP2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的青睐并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。Tomcat 是一个轻量级的服务器,运行时占用的系统资源少,安装和部署方便,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。

5 前端渲染

5.1 OpenLayers

OpenLayers(http://openlayers.org/)是一个开源的jS框架,用于在您的浏览器中实现地图浏览的效果和基本的zoom,pan等功能。OpenLayers支持的地图来源包括了WMS,GoogleMap,KaMap,MSVirtualEarth等等,您也可以用简单的图片作为源,在这一方面OpenLayers提供了非常多的选择。此外,OpenLayers实现了行业标准的地理数据访问方法如OGC的Web Mapping Service(WMS)and Web Feature Service(WFS)协议。OpenLayers可以简单的在任何页面中放入动态的地图。它可以从多种的数据源加载显示地图。MetaCarta公司开始开发了OpenLayers的初始版本同时将它开放给了公众以作为以后各种地理信息系统的应用。

5.2 OpenScales

OpenScales是一个基于Flex的优秀前台地图框架,可以用来开发各种网络版、手机版和桌面版地图程序。OpenScales是开源的、免费的客户端开发框架,基于LGPL开源协议,它在FlashPlayer中运行,可以在各个浏览器中使用,具有很好的跨平台特性。鉴于主要对Flash的友好支持,故可不放在第一梯队考虑。

5.3 Leaflet.JS

Leaflet(https://leafletjs.com/) 是一个为构建交互性好、适用于移动设备地图应用,而开发的现代的、开源的 JavaScript 库。 它是由 Vladimir Agafonkin 带领一个专业贡献者团队开发,代码量很小(仅33Kb),但具有开发人员开发在线地图的大部分功能。 Leaflet设计坚持简便、高性能和可用性好的哲学思想,在所有主要桌面和移动平台能高效运作, 在现代浏览器上会利用HTML5和CSS3的优势,同时也支持旧的浏览器访问。它支持插件扩展,有一个友好、易于使用的API文档和一个简单的、可读的源代码。

Leaflet 强大的开源库插件涉及地图应用的各个方面包括地图服务、数据提供、数据格式、地理编码、路线和路线搜索、地图控件和交互等类型的插件共有140多个。这些控件大大扩展了LeafLet 的功能,同时也可以设计开发自定义的控件,具有良好的可扩展性。其中Esri提供面向ArcGIS Services的leaflet的插件,插件支持Esri底图服务、要素服务、瓦片和动态图服务。Leaflet API可以调用各种在线的地图服务天地图、Google 地图、高德地图可以满足多种服务的需要。系统外观UI采用BootStrap 响应式结构设计框架对各种尺寸的屏幕进行优化显示,开发者只需具有基本的CSS基础就可以设计适合多终端、多平台的GIS应用。

5.4 Cesium

Cesium(https://cesium.com/cesiumjs/)基于 WebGL 的前端3D JavaScript 类库。 Cesium在2016年3月份左右推出3D Tiles数据规范,在gltf基础上提供了LOD能力, 就是Web环境下海量三维模型数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/347347.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

excel两个数据表格,怎样实现筛选的联动?

如图,想要通过处理器或者像素条件进行筛选,形成一个右边图2的对比表,如何实现实现联动显示呢? 这个在excel里可以借用数据透视表切片器来完成。步骤如下: 1.添加表 选中数据区域中任意一个单元格,点击 插…

跳动圆点加载动画

效果图: 完整代码: <!DOCTYPE html> <html> <head><meta charset="UTF-8" /><title>跳动圆点加载动画</title><style type="text/css">body {background: #ECF0F1;display: flex;justify-content: center;al…

“改进型”Howland 电流泵电路

“改进型”Howland 电流泵电路 “改进型”Howland 电流泵是一种使用差分放大器在分流电阻器 (Rs) 上施加电压的电路&#xff0c;从而产生能够驱动大范 围负载电阻的双极性&#xff08;拉电流或灌电流&#xff09;压控电流源。 设计注释 确保运算放大器的输入端&#xff08;V…

串口调试助手软件(ATK-XCOM) 版本:v2.0

串口设置 软件启动后&#xff0c;会自动搜索可用的串口&#xff0c;可以显示详细的串口信息&#xff0c;由于兼容性原因某些电脑可能不会显示。 超高波特率接收&#xff0c;在硬件设别支持的情况下&#xff0c;可自定义波特率&#xff0c;点“自定义”即可输入您想要的波特率&…

pycharm爬取BOSS直聘岗位信息

编译器&#xff1a;Pycharm 效果展示如图 简单原理描述&#xff1a;模拟人工动作爬取页面信息&#xff0c;运行脚本后代码自动打开浏览器获取相关信息&#xff0c;模拟人工进行页面跳转并自动抓取页面信息记录到表格中。 深入原理描述&#xff1a;页面翻转的时候会调用接口&am…

用人工智能写2024年高考作文

目录 用人工智能写2024年高考作文 引用 一、2024年 新课标I卷 作文真题 AI写作范文 二、2024年 全国甲卷 作文真题 AI写作范文 三、2024年 新课标II卷 作文真题 AI写作范文 四、2024年 北京卷 作文真题一 AI写作范文 作文真题二 AI写作范文 作文真题三 AI写作…

MySQL是怎么保证持久性的(redo log日志相关)

Mysql中 事务的很多实现&#xff0c;都是因为有日志的支撑&#xff0c;比如binlog、undo log、redo log等 MySQL是怎么保证持久性的 持久性是指&#xff0c;事务一旦提交&#xff0c;它对数据库的改变就应该是永久性的&#xff0c;接下来的其他操作或故障不能对其有影响。In…

Linux/Windows 安装 RocketMQ 详细图文教程!

Linux 安装 RocketMQ 首先&#xff0c;你需要从RocketMQ的官方网站或GitHub仓库下载最新的RocketMQ发行版下载安装&#xff0c;官网下载地址&#xff1a;https://rocketmq.apache.org/download/。 接下来配置环境变量&#xff1a; 输入vim /etc/profile命令配置环境变量输入i进…

【动态规划】| 路径问题之不同路径 力扣62

&#x1f397;️ 主页&#xff1a;小夜时雨 &#x1f397;️ 专栏&#xff1a;动态规划 &#x1f397;️ 如何活着&#xff0c;是我找寻的方向 目录 1. 题目解析2. 代码 1. 题目解析 题目链接: https://leetcode.cn/problems/unique-paths/description/ 通常动态规划的题目有…

牛客little w and Discretization

玩一下样例发现&#xff0c;只要找到mex就可以知道有((1-mex)的值)所在的位置离散化后和原本的值是一样的&#xff0c;所以询问区间的长度-&#xff08;1-mex&#xff09;有几个值就是答案&#xff0c;数据范围3e5&#xff0c;莫队值域分块求区间mex,计算1-mex有几个位置属于这…

51单片机-实机演示(LED点阵)

目录 前言: 一.线位置 二.扩展 三.总结 前言: 这是一篇关于51单片机实机LED点阵的插线图和代码说明.另外还有一篇我写的仿真的连接在这:http://t.csdnimg.cn/ZNLCl,欢迎大家的点赞,评论,关注. 一.线位置 接线实机图. 引脚位置注意: 1. *-* P00->RE8 P01->RE7 …

孟德尔随机化R包:TwoSampleMR和MR-PRESSO安装

1. 孟德尔随机化R包 看一篇文章&#xff0c;介绍孟德尔随机化分析&#xff0c;里面推荐了这两个R包&#xff0c;安装了解一下&#xff1a; Methods:Genome-wide association study (GWAS) data for autoimmune diseases and AMD were obtained from the IEU Open GWAS databas…

C#客户端

控件 打开链接 Socket socket; // 打开连接 private void button1_Click(object sender, EventArgs e) {button1.Enabled false;button2.Enabled true;//1 创建socket客户端对象socket new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);// 2…

鸿蒙轻内核A核源码分析系列四(2) 虚拟内存

本文我们来熟悉下OpenHarmony鸿蒙轻内核提供的虚拟内存&#xff08;Virtual memory&#xff09;管理模块。 本文中所涉及的源码&#xff0c;以OpenHarmony LiteOS-A内核为例&#xff0c;均可以在开源站点 https://gitee.com/openharmony/kernel_liteos_a 获取。如果涉及开发板…

鸿蒙开发文件管理:【@ohos.environment (目录环境能力)】

目录环境能力 该模块提供环境目录能力&#xff0c;获取内存存储根目录、公共文件根目录的JS接口。 说明&#xff1a; 本模块首批接口从API version 8开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。本模块接口为系统接口&#xff0c;三方应用不支…

SLT简介【简单介绍SLT】

SLT简介 在c的学习当中STL的学习是一个很重要的一环&#xff0c;但是STL又是一个庞大的章节&#xff0c;因此这里我们先简单介绍一下STL&#xff0c;有助于后面我们对STL的学习&#xff0c;这里就是做一个简单的介绍&#xff0c;并无干货。 1.什么是STL STL(standard templa…

【Emacs Verilog mode保姆级的使用指南】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

Python | Leetcode Python题解之第145题二叉树的后序遍历

题目&#xff1a; 题解&#xff1a; class Solution:def postorderTraversal(self, root: TreeNode) -> List[int]:def addPath(node: TreeNode):count 0while node:count 1res.append(node.val)node node.righti, j len(res) - count, len(res) - 1while i < j:res…

微软如何打造数字零售力航母系列科普13 - Prime Focus Technologies在NAB 2024上推出CLEAR®对话人工智能联合试点

Prime Focus Technologies在NAB 2024上推出CLEAR对话人工智能联合试点 彻底改变您与内容的互动方式&#xff0c;从内容的创建到分发 洛杉矶&#xff0c;2024年4月9日/PRNewswire/-媒体和娱乐&#xff08;M&E&#xff09;行业人工智能技术解决方案的先驱Prime Focus Techn…

【docker】compose 使用 .env 文件

在 Docker Compose 中&#xff0c;你可以使用 .env 文件来定义环境变量&#xff0c;这些变量可以在 docker-compose.yml 文件中被引用。这允许你轻松地管理配置&#xff0c;而不需要硬编码值到你的 Compose 文件中。 以下是如何在 Docker Compose 中使用 .env 文件的步骤&…