PostGIS学习教程六:几何图形(geometry)

news2024/11/16 7:31:06

文章目录

  • 一、介绍
  • 二、元数据表
  • 三、表示真实世界的对象
    • 3.1、点(Points)
    • 3.2、线串(Linestring)
    • 3.3、多边形(Polygon)
    • 3.4、图形集合(Collection)
  • 四、几何图形输入和输出
  • 五、从文本转换
  • 六、本文涉及的函数


一、介绍

在前面的章节中,我们已经往数据库中加载了数据,现在让我们来先看一些简单的例子。

在pgAdmin中,再次选择nyc数据库并打开SQL查询工具。将下面的SQL代码粘贴到pgAdmin SQL Editor窗口中(删除默认情况下可能存在的任何文本),然后执行。

CREATE TABLE geometries (name varchar, geom geometry);
 
INSERT INTO geometries VALUES
  ('Point', 'POINT(0 0)'),
  ('Linestring', 'LINESTRING(0 0, 1 1, 2 1, 2 2)'),
  ('Polygon', 'POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))'),
  ('PolygonWithHole', 'POLYGON((0 0, 10 0, 10 10, 0 10, 0 0),(1 1, 1 2, 2 2, 2 1, 1 1))'),
  ('Collection', 'GEOMETRYCOLLECTION(POINT(2 0),POLYGON((0 0, 1 0, 1 1, 0 1, 0 0)))');
 
SELECT name, ST_AsText(geom) FROM geometries;

在这里插入图片描述
上面的示例创建了一个表(geometries),然后向该表中插入5个几何图形数据(geometry):

一个点(POINT)
一条线(LINESTRING)
一个多边形(POLYGON)
一个内含空洞的多边形(POLYGON with a hole)
一个图形集合(GEOMETRYCOLLECTION)
最后,查询表中的数据并输出。

二、元数据表

为了符合Simple Features for SQL(SFSQL)规范,PostGIS提供了两张表用于追踪和报告数据库中的几何图形(这两张表中的内容相当于元数据):

第一张表spatial_ref_sys —— 定义了数据库已知的所有空间参照系统,稍后将对其进行更详细的说明。
第二张表(实际上是视图-view)geometry_columns —— 提供了数据库中所有空间数据表的描述信息。
在这里插入图片描述
让我们来看一下数据库中的geometry_columns表,像原先那样将以下命令粘贴到查询工具中:

SELECT * FROM geometry_columns;

在这里插入图片描述
f_table_catalog,f_table_schema,和f_table_name提供各个几何图形(geometry)的要素表(feature table)—— 即空间数据表 —— 的完全限定名称,分别是数据库名、模式名、空间数据表名。
f_geometry_column包含对应空间数据表中用于记录几何信息的属性列的列名。
coord_dimension定义几何图形的维度(2维、3维或4维)
srid会引用自spatial_ref_sys表的空间参考标识符
type列定义了几何图形的类型。比如"点(Point)"和"线串(Linestring)"等类型。
通过查询该表,GIS客户端和数据库可以确定检索数据时的预期内容,并可以执行任何必要的投影、处理、渲染而无需检查每个几何图形(geometry)—— 这些就是元数据所带来的作用。

注意:如果nyc数据库的表没有指定26918的srid,那该怎么办呢?通过更新表很容易修复:

SELECT UpdateGeometrySRID('nyc_neighborhoods','geom',26918);

三、表示真实世界的对象

Simple Features for SQL(SFSQL)规范是PostGIS开发的原始指导标准,它定义了如何表示真实世界的对象。

通过形成连续的图形并以固定的分辨率对其进行数字化,实现了对真实世界的合理表示。

SFSQL只规定了对真实世界对象的二维表示,然而,PostGIS已自行扩展了3维和4维的表示。最近,SQL-Multimedia Part 3(SQL/MM)规范正式定义了它们自己的三维表示。

示例的表包含不同几何图形类型的混合。我们可以使用读取几何图形元数据的函数获取每个对象的基本信息:

ST_GeometryType(geometry) —— 返回几何图形的类型
ST_NDims(geometry) —— 返回几何图形的维数
ST_SRID(geometry) —— 返回几何图形的空间参考标识码

SELECT name, ST_GeometryType(geom), ST_NDims(geom), ST_SRID(geom)
FROM geometries;

在这里插入图片描述
在这里插入图片描述

3.1、点(Points)

在这里插入图片描述
空间点(Point)表示地球上的单个位置。点由单个坐标表示(包括2维、3维或4维)。

当详细的细节(例如形状和大小)在目标空间尺度上不重要时,真实世界中的对象可以直接用点表示。例如,世界地图上的城市可以描述为点,而在一幅州地图中可以将城市表示为多边形。

SELECT ST_AsText(geom)
FROM geometries
WHERE name = 'Point';

在这里插入图片描述
针对点的一些特定空间函数包括:

ST_X(geometry) —— 返回X坐标
ST_Y(geometry) —— 返回Y坐标
ST_Z(geometry) —— 返回Z坐标
ST_M(geometry) —— 返回M信息
所以,我们这样来读取一个点图形的坐标值:

SELECT ST_X(geom), ST_Y(geom)
FROM geometries
WHERE name = 'Point';

在这里插入图片描述
纽约市地铁站(nyc_subway_stations)表是一个以点表示的数据集。以下SQL查询将返回一个点图形数据(在ST_AsText列中):

SELECT name, ST_AsText(geom)
FROM nyc_subway_stations
LIMIT 1;

在这里插入图片描述

3.2、线串(Linestring)

在这里插入图片描述
线串(Linestring)是表示两个或多个位置之间的路径,它的形式是由两个或多个点组成的有序序列。道路和河流通常表示为线串。

如果线串的起始点和结束点是同一个点,则称其是闭合的(closed),可以使用ST_IsClosed函数进行测试。

如果线串不与自身交叉或接触(如果线串是闭合的,则排除结束点),则称其是简单的(simple),可以使用ST_IsSimple函数进行测试。

线串既可以是闭合的,也可以是简单的。

纽约的街道网络数据(nyc_streets)在前面的章节中已经加载到数据库中了,这个数据集包含名称和类型等详细信息。

一条真实的街道可能由许多线串组成,每条线串代表一段具有不同属性特征的道路。

以下SQL查询将返回一个线串图形的信息(在ST_AsText列中)

SELECT ST_AsText(geom)
FROM geometries
WHERE name = 'Linestring';

在这里插入图片描述
用于处理线串的一些特定空间函数包括:

ST_Length(geometry) —— 返回线串的长度
ST_StartPoint(geometry) —— 将线串的第一个坐标作为点返回
ST_EndPoint(geometry) —— 将线串的最后一个坐标作为点返回
ST_NPoints(geometry) —— 返回线串的坐标数量
所以,我们的线串的长度为:

SELECT ST_Length(geom)
FROM geometries
WHERE name = 'Linestring'

在这里插入图片描述

3.3、多边形(Polygon)

在这里插入图片描述
多边形(Polygon)是区域的表示形式。多边形的外部边界由一个环(Ring)表示(外环),这个环是一个线串,如上面定义的,它既是闭合的,又是简单的。多边形中的孔(hole)也由环表示(内环)。

多边形用于表示重视大小和形状这两个特征的地理对象。城市边界、公园、建筑或水体都通常需要表示为多边形,当比例尺足够大时,可以观测它们的面积。道路和河流有时也可以表示为多边形。

以下SQL查询将返回两个多边形图形的信息(在ST_AsText列中):

SELECT ST_AsText(geom)
FROM geometries
WHERE name LIKE 'Polygon%';

注意:我们不是在WHERE子句中使用"=“符号,而是使用LIKE运算符执行字符串匹配操作。你可能习惯使用”*“符号作为模式匹配中的单字符或多字符匹配,但在SQL中,使用”%“符号和LIKE运算符来告诉系统执行全局匹配。
在这里插入图片描述
第一个多边形只有一个环(外环),第二个多边形有一个内部的"孔洞(hole)”(内环),大多数图形系统都包含多边形的概念,但GIS系统在允许多边形有内环方面是比较独特的。
在这里插入图片描述
关于多边形图形的一些特定空间函数包括:

ST_Area(geometry) —— 返回多边形的面积
ST_NRings(geometry) —— 返回多边形中环的数量(通常为1个,其他是孔)
ST_ExteriorRing(geometry) —— 以线串的形式返回多边形最外面的环
ST_InteriorRingN(geometry, n) —— 以线串形式返回指定的内部环
ST_Perimeter(geometry) —— 返回所有环的长度
我们可以使用空间函数计算多边形的面积:

SELECT name, ST_Area(geom)
FROM geometries
WHERE name LIKE 'Polygon%';

在这里插入图片描述
请注意,带内环的多边形的面积是多边形外环的面积(10 x 10正方形)减去内环的面积(1 x 1正方形)

3.4、图形集合(Collection)

有四种图形集合(Collection)类型,它们将多个简单几何图形组合为图形集合:

MultiPoint —— 点集合
MultiLineString —— 线串集合
MultiPolygon —— 多边形集合
GeometryCollection —— 由任意几何图形(包括其他GeometryCollection)组成的异构集合
集合更多地出现在GIS软件中,而不是在通用图形软件中。

集合对于将真实世界的对象直接建模为空间对象非常有用。例如,如何对被路权(路权指交通参与者的权利)分割的多个道路部分进行建模?答案是将其作为MultiPolygon建模,其组成部分位于路权的两侧。
在这里插入图片描述
我们示例中的几何图形集合包含一个多边形和一个点:

SELECT name, ST_AsText(geom)
FROM geometries
WHERE name = 'Collection';

在这里插入图片描述
在这里插入图片描述
用于处理图形集合的一些特定空间函数:

ST_NumGeometries(geometry) —— 返回集合中的组成部分的数量
ST_GeometryN(geometry, n) —— 返回集合中指定的组成部分
ST_Area(geometry) —— 返回集合中所有多边形组成部分的总面积
ST_Length(geometry) —— 返回所有线段组成部分的总长度

四、几何图形输入和输出

在数据库中,几何图形(Geometry)以仅供PostGIS使用的格式存储在磁盘上。为了让外部程序插入和检索有用的几何图形信息,需要将它们转换为其他应用程序可以理解和解析的格式。

幸运的是,PostGIS支持以多种格式进行几何图形的输入和输出。

①Well-known text(WKT)

ST_GeomFromText(text, srid) —— 返回geometry
ST_AsText(geometry) —— 返回text
ST_AsEWKT(geometry) —— 返回text
②Well-known binary(WKB)

ST_GeomFromWKB(bytea) —— 返回geometry
ST_AsBinary(geometry) —— 返回bytea
ST_AsEWKB(geometry) —— 返回bytea
③Geographic Mark-up Language(GML)

ST_GeomFromGML(text) —— 返回geometry
ST_ASGML(geometry) —— 返回text
④Keyhole Mark-up Language(KML)

ST_GeomFromKML(text) —— 返回geometry
ST_ASKML(geometry) —— 返回text
⑤GeoJson

ST_AsGeoJSON(geometry) —— 返回text
⑥Scalable Vector Graphics(SVG)

ST_AsSVG(geometry) —— 返回text
以上函数最常见的用法是将几何图形的文本(text)表示形式转换为内部表示形式:

请注意,除了具有几何图形表示形式的文本参数外,还可以指定一个提供几何图形SRID的数字参数。

以下SQL查询展示了一个WKB表示形式的示例(将二进制输出转换为ASCII格式以进行打印时,需要调用encode()):

SELECT encode(
  ST_AsBinary(ST_GeometryFromText('LINESTRING(0 0,1 0)')),
  'hex');

在这里插入图片描述
在本教程中,将使用WKT,以确保你能够理解我们正在查看的几何图形。但是,在大多数实际生产环境中(如查看GIS应用程序中的数据、将数据传输到web客户端或远程处理数据),WKB是首选的格式。

由于WKT和WKB是在SFSQL规范中定义的,因此它们不能处理3维或4维的几何图形。对于这些情况,PostGIS定义了Extended Well Known Text(EWKT)和Extended Well Known Binary(EWKB)格式以用于处理3维或4维的几何图形。

它们提供了与WKT和WKB相同的格式化功能,并且是在增加了维度的情况下。

以下是WKT中三维(3D)线串示例:

SELECT ST_AsText(ST_GeometryFromText('LINESTRING(0 0 0,1 0 0,1 1 2)'));

在这里插入图片描述
注意:文本表示形式发生了变化!这是因为PostGIS的文本输入程序在使用方面是自由的。它可以使用:

十六进制编码的EWKB
扩展的EWKT
ISO标准的WKT
但是在输出端,ST_AsText()只返回ISO标准的WKT格式。

除了ST_GeometryFromText函数之外,还有许多其他方式可以从WKT或类似的格式输入中创建几何图形:

-- Using ST_GeomFromText with the SRID parameter
SELECT ST_GeomFromText('POINT(2 2)',4326);

-- Using ST_GeomFromText without the SRID parameter
SELECT ST_SetSRID(ST_GeomFromText('POINT(2 2)'),4326);

-- Using a ST_Make* function
SELECT ST_SetSRID(ST_MakePoint(2, 2), 4326);

-- Using PostgreSQL casting syntax and ISO WKT
SELECT ST_SetSRID('POINT(2 2)'::geometry, 4326);

-- Using PostgreSQL casting syntax and extended WKT
SELECT 'SRID=4326;POINT(2 2)'::geometry;

除了用于各种格式(WKT、WKB、GML、KML、JSON、SVG、MVT等)的输出函数外,PostGIS还有各种格式(WKT、WKB、GML、KML、JSON等)的输入函数。

大多数应用程序使用WKT或WKB几何图形创建函数,但是也可以使用其他格式的几何图形创建函数。

下面是一个使用GML输入和输出JSON的示例:

SELECT ST_AsGeoJSON(ST_GeomFromGML('<gml:Point><gml:coordinates>1,1</gml:coordinates></gml:Point>'));

在这里插入图片描述

五、从文本转换

到目前为止,我们看到的WKT字符串都是’text’类型,我们使用PostGIS的函数ST_GeomFromText()将它们转换为’gometry’类型。

PostgreSQL包含一个简短形式的语法,允许数据从一种类型转换到另一种类型,即类型转换语法:

olddata::newtype

例如,将double类型转换为文本字符串类型:

SELECT 0.9::text;

以下SQL语句将一个WKT字符串转换成一个几何图形(geometry):

SELECT 'POINT(0 0)'::geometry;

在这里插入图片描述
关于使用类型转换语法创建几何图形,需要注意一点:除非指定SRID,否则将得到一个包含未知SRID的几何图形。

可以使用EWKT形式指定SRID,该形式可以在前面包含一个SRID:

SELECT 'SRID=4326;POINT(0 0)'::geometry;

在这里插入图片描述

六、本文涉及的函数

ST_Area: Returns the area of the surface if it is a polygon or multi-polygon. For “geometry” type area is in SRID units. For “geography” area is in square meters.

ST_AsText: Returns the Well-Known Text (WKT) representation of the geometry/geography without SRID metadata.

ST_AsBinary: Returns the Well-Known Binary (WKB) representation of the geometry/geography without SRID meta data.

ST_EndPoint: Returns the last point of a LINESTRING geometry as a POINT.

ST_AsEWKB: Returns the Well-Known Binary (WKB) representation of the geometry with SRID meta data.

ST_AsEWKT: Returns the Well-Known Text (WKT) representation of the geometry with SRID meta data.

ST_AsGeoJSON: Returns the geometry as a GeoJSON element.

ST_AsGML: Returns the geometry as a GML version 2 or 3 element.

ST_AsKML: Returns the geometry as a KML element. Several variants. Default version=2, default precision=15.

ST_AsSVG: Returns a Geometry in SVG path data given a geometry or geography object.

ST_ExteriorRing: Returns a line string representing the exterior ring of the POLYGON geometry. Return NULL if the geometry is not a polygon. Will not work with MULTIPOLYGON

ST_GeometryN: Returns the 1-based Nth geometry if the geometry is a GEOMETRYCOLLECTION, MULTIPOINT, MULTILINESTRING, MULTICURVE or MULTIPOLYGON. Otherwise, return NULL.

ST_GeomFromGML: Takes as input GML representation of geometry and outputs a PostGIS geometry object.

ST_GeomFromKML: Takes as input KML representation of geometry and outputs a PostGIS geometry object

ST_GeomFromText: Returns a specified ST_Geometry value from Well-Known Text representation (WKT).

ST_GeomFromWKB: Creates a geometry instance from a Well-Known Binary geometry representation (WKB) and optional SRID.

ST_GeometryType: Returns the geometry type of the ST_Geometry value.

ST_InteriorRingN: Returns the Nth interior linestring ring of the polygon geometry. Return NULL if the geometry is not a polygon or the given N is out of range.

ST_Length: Returns the 2d length of the geometry if it is a linestring or multilinestring. geometry are in units of spatial reference and geography are in meters (default spheroid)

ST_NDims: Returns coordinate dimension of the geometry as a small int. Values are: 2,3 or 4.

ST_NPoints: Returns the number of points (vertexes) in a geometry.

ST_NRings: If the geometry is a polygon or multi-polygon returns the number of rings.

ST_NumGeometries: If geometry is a GEOMETRYCOLLECTION (or MULTI*) returns the number of geometries, otherwise return NULL.

ST_Perimeter: Returns the length measurement of the boundary of an ST_Surface or ST_MultiSurface value. (Polygon, Multipolygon)

ST_SRID: Returns the spatial reference identifier for the ST_Geometry as defined in spatial_ref_sys table.

ST_StartPoint: Returns the first point of a LINESTRING geometry as a POINT.

ST_X: Returns the X coordinate of the point, or NULL if not available. Input must be a point.

ST_Y: Returns the Y coordinate of the point, or NULL if not available. Input must be a point.

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mysql中的索引与事务和B树的知识补充

索引与事务和B树的知识补充 一.索引1.概念2.作用3.使用场景4.使用 二.事务1.为什么使用事务2.事务的概念3.使用3.1脏读问题3.2不可重复读3.3 幻读问题3.4解决3.5 使用代码 三.B树的知识补充1.B树2.B树 一.索引 1.概念 索引是一种特殊的文件&#xff0c;包含着对数据表里所有记…

C++基础知识记录

github仓库不定期更新: https://github.com/han-0111/CppLearning 文章目录 C如何工作编译器和链接器编译器预处理(Preprocessing)includedefineif/endif 链接器一种比较复杂的情况 变量变量类型intcharshortlonglong longfloatdoublebool如何查看数据大小 函数头文件条件语句…

使用 sCrypt CLI 工具验证合约

通过向 Whatsonchain 提交合约源代码可以实现合约的验证。 另外一种方法是使用 sCrypt CLI 工具来验证合约。 You can verify the deployed smart contracts script using the verify command: scrypt verify <scriptHash> <contractPath>第一个位置参数是已部署…

博客系统页面设计

目录 前言 1.预期效果 1.1博客列表页效果 1.2博客详情页效果 1.3博客登陆页效果 2.实现博客列表页 2.1实现导航栏 2.2实现版心 2.3实现个人信息 2.4实现博客列表 3.实现博客正文页 3.1引入导航栏 3.2引入版心 3.3引入个人信息 3.4实现博客正文 4.实现博客登陆页…

javascript原来还可以这样比较两个日期(直接使用new Date)

有个需求是这样的&#xff1a;假设今天是2023/11/15 有一个表格&#xff0c;表格中操作列按钮的展示与隐藏依靠开始结束日期来进行展示&#xff0c;如果当前日期在开始结束日期之间&#xff0c;则进行展示&#xff0c;我一开始做的时候使用new Date转换成时间戳(getTime)进行比…

7天入门python系列之爬取热门小说项目实战,互联网的东西怎么算白嫖呢

第七天 Python项目实操 编者打算开一个python 初学主题的系列文章&#xff0c;用于指导想要学习python的同学。关于文章有任何疑问都可以私信作者。对于初学者想在7天内入门Python&#xff0c;这是一个紧凑的学习计划。但并不是不可完成的。 学到第7天说明你已经对python有了一…

生活消费分销系统搭建开发制作

文章目录 前言 一、生活消费系统是什么&#xff1f;二、生活消费分销系统的营销方式和功能三、总结 一、生活消费系统介绍 生活消费系统涵盖了吃喝玩乐&#xff0c;衣食住行。网购消费等生活消费的优惠券领取以及分销功能 二、生活消费分销系统的营销方式和功能 A: 会员体…

基于Springboot的影城管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的影城管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 项目介绍…

【Proteus仿真】【Arduino单片机】DS18B20温度计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器&#xff0c;使用PCF8574、LCD1602液晶、DS18B20温度传感器等。 主要功能&#xff1a; 系统运行后&#xff0c;LCD1602显示传感器采集温度。 二、软件设计 /*…

Android抓包工具—Fiddler详解

前言 平时和其他大佬交流时&#xff0c;总会出现这么些话&#xff0c;“抓个包看看就知道哪出问题了”&#xff0c;“抓流量啊&#xff0c;payload都在里面”&#xff0c;“这数据流怎么这么奇怪”。 &#x1f449;这里出现的名词&#xff0c;其实都是差不多的意思啊&#xf…

leetcode:1576. 替换所有的问号(python3解法)

难度&#xff1a;简单 给你一个仅包含小写英文字母和 ? 字符的字符串 s&#xff0c;请你将所有的 ? 转换为若干小写字母&#xff0c;使最终的字符串不包含任何 连续重复 的字符。 注意&#xff1a;你 不能 修改非 ? 字符。 题目测试用例保证 除 ? 字符 之外&#xff0c;不存…

Unity反编译:IL2CPP 打包输出的cpp文件和dll(程序集)位置、Mono打包输出的dll(程序集)位置

目录 如题&#xff1a;IL2CPP 打包输出的cpp文件和dll位置(并不会出现在APK里) 如题&#xff1a;Mono打包输出的dll位置 校验平台&#xff1a;Android 如题&#xff1a;IL2CPP 打包输出的cpp文件和dll位置(并不会出现在APK里) Unity Assets同级目录下 Temp/StagingArea/Il2…

C# datagridView 控件使用心得

首先本人的需求是&#xff0c;通过UI编辑一个表格文件&#xff0c;然后将其存储起来。 同时也可以对其进行载入,话不多说先上图片 dataGridView1 的初始化&#xff0c;这个控件的初始化可以使用UI界面的设置&#xff0c;也可以使用程序&#xff1a; Column1 new System.Window…

开源免费的Windows应用程序强力卸载工具Bulk Crap UninstallerV5.7的简单使用

经常遇到Windows平台上安装的一些应用&#xff0c;因为应用自带的安装卸载程序有问题、应用的卸载程序损坏、应用卸载需要密码等原因&#xff0c;导致应用无法卸载、卸载不完整等。本介绍了开源的Windows应用程序强力卸载工具Bulk Crap UninstallerV5.7和安装使用的简单说明。 …

Ubuntu 搜狗输入法无法输入中文解决方案(不需要重装,不需要重启服务器)

Ubuntu 搜狗输入法突然无法输入中文&#xff0c;上午还好用&#xff0c;下午就不好用了&#xff0c;直接上解决方案 1.终端输入pidof fcitx找到搜狗的进程&#xff0c;如下图红框中的就是进程 2.直接杀掉这个进程 3.其实到第二步&#xff0c;如果搜狗输入法自动重启了&#xf…

数据库事务相关问题

1. 什么是数据库事务&#xff1f; 事务&#xff0c;由一个有限的数据库操作序列构成&#xff0c;这些操作要么全部执行,要么全部不执行&#xff0c;是一个不可分割的工作单位。 假如A转账给B 100 元&#xff0c;先从A的账户里扣除 100 元&#xff0c;再在 B 的账户上加上 100 …

力扣每日一道系列 --- LeetCode 160. 相交链表

&#x1f4f7; 江池俊&#xff1a; 个人主页 &#x1f525;个人专栏&#xff1a; ✅数据结构探索 ✅LeetCode每日一道 &#x1f305; 有航道的人&#xff0c;再渺小也不会迷途。 LeetCode 160. 相交链表 思路&#xff1a; 首先计算两个链表的长度&#xff0c;然后判断两个链…

原生js做打地鼠游戏

抱歉素材有点难找&#xff0c;这次的学习重点是在JS的实现&#xff0c;梳理一下打地鼠的实现逻辑&#xff0c;主要分为三个主要功能函数。 开始游戏&#xff1a;对分数、并根据游戏难度对游戏的倒计时和延迟进行初始化之后&#xff0c;利用setInterval定时器Math.random随机函…

淘宝客APP源码/社交电商自营商城源码/前端基于Uniapp开发

淘宝客APP源码&#xff0c;前端基于Uniapp开发的社交电商自营商城源码。Thinkphp的后台&#xff0c;不是很标准&#xff0c;感兴趣的可以自行研究。 商城功能 1、首页基础装修&#xff1b;2、丰富选品库&#xff1b;3、淘口令解析&#xff1b;4、支持京东&#xff1b;5、支持…

python链表_递归求和_递归求最大小值

创建一个单链表&#xff1a; class LinkNode: #设置属性def __init__(self,data None):self.data dataself.next None class LinkList: #设置头结点def __init__(self):self.head LinkNode()self.head.next Nonedef CreateListR(self,a): …