基于SpringBoot和PostGIS的各省与地级市空间距离分析

目录

前言

一、PostGIS时空库

1、时空表设计

2、空间数据管理与查询

二、后台接口设计

1、ORM层设计与实现

2、业务层设计与实现

3、控制层设计

三、web可视化设计与实现

1、省份范围展示

2、城市距离可视化

3、成果展示

总结 


前言

        在上一篇博客中基于Java和GDAL实现的GeoJSON数据读取与入库实践,我们详细的讲解了使用GDAL将GeoJSON的数据进行入库操作。在这个例子当中,使用的数据是全国的地点数据。在这之前,我们来看一些我们身边常见的空间地理距离现象。

        众所周知,中国地大物博,幅员辽阔。随着改革开放,中国经济高速稳步发展,但经济的快速发展也带来了“负面”的情况,比如很多城市发展的各种不平衡。中国是以省制为基础的,每个省都有自己的省会。一般来说,省会是一个省的领导,起主导作用。无论是经济、政治、文化都是省内数一数二的,能对周边城市起到重要的辐射作用。

        一般除了有自己发展特色的城市,如果一个城市离省会比较近,经济会被直接带动,也可以辐射享受很多资源和涟漪。中国距离最近的省会,相距只有150公里。这两个“兄弟”分别是江苏的省会和安徽的省会。由于两个省会城市的直线距离只有150公里,乘坐高铁只需一个小时,交通十分便利。但是江苏和安徽从实力上来说历史悠久,因为曾经同属江南省,彼此联系紧密。虽然这两个城市很近,但是你知道吗?这两个“兄弟”的发展是不同的。

        再从省域上面来看,以湖南省为例。你知道湖南省哪几个城市距离长沙最近?而哪几个城市离长沙更远呢。首先来揭晓答案,离长沙最近的是湘潭和株洲,湘潭44公里,株洲48公里。而最远的莫过于怀化市和湘西土家族自治州,分别为298公里和314公里。当然上面提到的距离,一般都是直线距离。实际上,跟随着我们道路,一般都不是直线,因此,其实际距离是远远大于直线距离的。研究各城市与省会城市的距离,除了直观的了解空间距离外,还可以作为主要影响因素,去分析区位分布,距离权重等等。

        本文将以之前管理的地名数据为例,基于SpringBoot和PostGIS详细讲解如何进行省会城市与省域内各城市之间的直线空间距离,如何将直线空间距离在WebGIS中进行地图可视化。如果您现在也有计算城市间直线距离的需求,这篇博客将有详细的过程说明。

一、PostGIS时空库

        为了实现上述的需求,我们需要采用PostGIS进行空间数据的管理,主要包括的数据有省级行政区划数据、省会城市数据、地级市城市数据。这里的空间数据都统一存储至PostGIS中,为了更直观的演示相关功能,该小节将重点讲解PostGIS的表设计与数据存储格式。

序号表名说明
1biz_province省份信息表
2biz_geographic_name地名信息表

1、时空表设计

        虽然在之前的博客中有所提及上述两张表,为了照顾没有看过之前博客的朋友们。不至于对系统设计的两张表存在理解问题,这里将提供这两张表的SQL脚本,供大家参考:

CREATE TABLE "public"."biz_geographic_name" ("pk_id" int8 NOT NULL,"name" varchar(255) COLLATE "pg_catalog"."default" NOT NULL,"pinyin" varchar(255) COLLATE "pg_catalog"."default","classz" varchar(4) COLLATE "pg_catalog"."default","bz" varchar(100) COLLATE "pg_catalog"."default","slx" varchar(20) COLLATE "pg_catalog"."default","geom" "public"."geometry" NOT NULL,CONSTRAINT "pk_biz_geographic_name" PRIMARY KEY ("pk_id")
);CREATE INDEX "idex_biz_geographic_name_classz" ON "public"."biz_geographic_name" USING btree ("classz" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
);
CREATE INDEX "idx_biz_geographic_name_geom" ON "public"."biz_geographic_name" USING gist ("geom" "public"."gist_geometry_ops_2d"
);

        下面是省级行政区划信息表:

CREATE TABLE "public"."biz_province" ("id" int8 NOT NULL,"code" varchar(16) COLLATE "pg_catalog"."default" NOT NULL,"name" varchar(64) COLLATE "pg_catalog"."default" NOT NULL,"type" varchar(32) COLLATE "pg_catalog"."default","geom" "public"."geometry",CONSTRAINT "pk_biz_province" PRIMARY KEY ("id")
);
CREATE INDEX "idx_biz_province_code" ON "public"."biz_province" USING btree ("code" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
);
COMMENT ON COLUMN "public"."biz_province"."id" IS '主键ID';
COMMENT ON COLUMN "public"."biz_province"."code" IS '省份编码,对应行政区划编码';
COMMENT ON COLUMN "public"."biz_province"."name" IS '省份名称';
COMMENT ON COLUMN "public"."biz_province"."type" IS '类型';
COMMENT ON COLUMN "public"."biz_province"."geom" IS 'geom';

2、空间数据管理与查询

        将基础数据保存至PostGIS数据库之后,就可以计算各省省会与地级市之间的距离。首先第一步是省会城市的数据(以湖南省为例,省份的编码是430000,其它是城市信息表中的信息,bz中保存了城市类型),距离查询函数使用PostGIS自带的ST_Distance函数,待执行的SQL语句如下:

SELECT t.*, p.code  
FROM biz_province p  
JOIN biz_geographic_name t ON _st_contains(p.geom, t.geom)  
WHERE p.code = '430000' AND t.classz = 'AD' AND t.bz = '省会城市'  

         查询了省会城市之后,要实现各个地级市的空间距离计算,因此还需要将地市的位置计算出来。这里采用空间分析的功能,实现的函数是_st_contains();请注意:在我国的行政区划数据中,像自治州等没有单独设置成次级市。待执行的SQL语句如下:

  SELECT t.*, p.code  FROM biz_province p  JOIN biz_geographic_name t ON _st_contains(p.geom, t.geom)  WHERE p.code = '430000' AND (  (t.classz = 'AD' AND t.bz = '地级市') OR (t.classz = 'AC' AND t.bz = '少数民簇自治区') Or ( t.classz = 'AD' AND t.bz = '省会城市')	)  

        查询省会城市与各地市的距离,我们使用st_distance方法,关键的SQL语句如下所示:

WITH Ta AS (  SELECT t.*, p.code  FROM biz_province p  JOIN biz_geographic_name t ON _st_contains(p.geom, t.geom)  WHERE p.code = '430000' AND t.classz = 'AD' AND t.bz = '省会城市'  
),  
Tb AS (  SELECT t.*, p.code  FROM biz_province p  JOIN biz_geographic_name t ON _st_contains(p.geom, t.geom)  WHERE p.code = '430000' AND (  (t.classz = 'AD' AND t.bz = '地级市') OR (t.classz = 'AC' AND t.bz = '少数民簇自治区') Or ( t.classz = 'AD' AND t.bz = '省会城市')	)  
)  
SELECT Tb.name, Tb.pinyin, Tb.bz, ST_Distance(Tb.geom::geography, Ta.geom::geography) AS dist,st_asgeojson(tb.geom) geomJson
FROM Ta  
right join Tb ON Ta.code = Tb.code  
ORDER BY dist;

        请注意,以上方式生成的距离是直线距离,而且使用geography来进行展示,其默认单位是米(请注意3857和4326之间的区别,防止对最终值有影响)。

        好了,以上是空间距离计算的核心,这里详细说明了如何基于PostGIS进行空间直线距离的查询。相信你也明白了上述的原理。必须要学会空间查询,然后您才能PostGIS的世界中遨游。

二、后台接口设计

        每个前端接口都会对应一个后台的接口。而这里的接口主要返回所在省份的地级市列表,在城市列表中展示省份信息,点击省份定位,可以查看当前省份中,各地市与省会的距离。后台将各省省会城市和地级市城市列表返回到前台。

1、ORM层设计与实现

        在前面的内容中已经将如何查询省会城市以及如何查询地级市城市列表,同时将他们的矢量坐标以GeoJSON的方式返回给前端,前端可以直接解析GeoJSON来获取空间的经纬度信息。下面把具体的后台ORM层代码做一个演示。

        实体层代码如下:

package com.yelang.project.extend.earthquake.domain;
import java.io.Serializable;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yelang.framework.handler.PgGeometryTypeHandler;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
@TableName(value ="biz_geographic_name",autoResultMap = true)
public class GeographicName implements Serializable{private static final long serialVersionUID = -3694849578429480952L;@TableId(value = "pk_id")private Long pkId;private String name;private String pinyin;private String classz;private String bz;private String slx;public GeographicName(String name, String pinyin, String classz, String bz, String slx, String geom) {super();this.name = name;this.pinyin = pinyin;this.classz = classz;this.bz = bz;this.slx = slx;this.geom = geom;}@TableField(typeHandler = PgGeometryTypeHandler.class)private String geom;@TableField(exist=false)private String geomJson;  @TableField(exist=false)private BigDecimal dist;//距离
}

        数据访问代码如下:

package com.yelang.project.extend.earthquake.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yelang.project.extend.earthquake.domain.GeographicName;
public interface GeographicNameMapper extends BaseMapper<GeographicName>{static final String FIND_LIST_BY_PROVINCE_CODE = "<script>"+ "WITH Ta AS ( SELECT t.*, p.code FROM biz_province p JOIN biz_geographic_name t ON _st_contains(p.geom, t.geom) "+ "  WHERE p.code = #{code} AND t.classz = 'AD' AND t.bz = '省会城市'  ),"+ " Tb AS ( SELECT t.*, p.code FROM biz_province p JOIN biz_geographic_name t ON _st_contains(p.geom, t.geom) "+ " WHERE p.code = #{code} AND ((t.classz = 'AD' AND t.bz = '地级市') OR (t.classz = 'AC' AND t.bz = '少数民簇自治区')  Or ( t.classz = 'AD' AND t.bz = '省会城市')	)  "+" ) SELECT Tb.name, Tb.pinyin, Tb.bz, ST_Distance(Tb.geom::geography, Ta.geom::geography) AS dist,st_asgeojson(tb.geom) as geomJson "+ " FROM Ta right join Tb ON Ta.code = Tb.code ORDER BY dist "+ "</script>";@Select(FIND_LIST_BY_PROVINCE_CODE)List<GeographicName> findListByProvinceCode(@Param("code")String code);
}

2、业务层设计与实现

        业务层实现为控制层提供业务支持,这里主要提供按照省份名称进行查询,地名业务层比较简单,不进行赘述。

@Override
public List<Province> selectList(Province province) {QueryWrapper<Province> queryWrapper = new QueryWrapper<Province>();if(StringUtils.isNotBlank(province.getName())){queryWrapper.like("name", province.getName());}queryWrapper.select(" id,code,name,type ");queryWrapper.orderByAsc("code");return this.baseMapper.selectList(queryWrapper);
}

3、控制层设计

        为了便于在前端页面上展示省份的空间范围,后台提供一个返回省级行政区划范围的方法。同时将省会城市和对应地市城市的数据统一返回一个列表,供前端来调用。控制层的代码如下:

package com.yelang.project.extend.earthquake.controller;
import java.util.List;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.yelang.framework.web.controller.BaseController;
import com.yelang.framework.web.domain.AjaxResult;
import com.yelang.framework.web.page.TableDataInfo;
import com.yelang.project.extend.earthquake.domain.GeographicName;
import com.yelang.project.extend.earthquake.domain.Province;
import com.yelang.project.extend.earthquake.service.IGeographicNameService;
import com.yelang.project.extend.earthquake.service.IProvinceService;
@Controller
@RequestMapping("/eq/province/distance")
public class ProvinceDistanceController extends BaseController{private String prefix = "earthquake/province/distance";@Autowiredprivate IProvinceService provinceService;@Autowiredprivate IGeographicNameService geoNameService;@RequiresPermissions("eq:province:distance:view")@GetMapping()public String map(){return prefix + "/map";}@RequiresPermissions("eq:province:distance:list")@PostMapping("/list")@ResponseBodypublic TableDataInfo list(Province province){startPage();List<Province> list = provinceService.selectList(province);return getDataTable(list);}@RequiresPermissions("eq:province:distance:geom")@GetMapping("/geojson/{id}")@ResponseBodypublic AjaxResult getGeojson(@PathVariable("id") Long id){Province province = provinceService.findGeoJsonById(id, null);return AjaxResult.success().put("data", province.getGeomJson());}@RequiresPermissions("eq:province:distance:quakelist")@GetMapping("/datalist/{code}")@ResponseBodypublic AjaxResult distanceList(@PathVariable("code") String code){List<GeographicName> list = geoNameService.findListByProvinceCode(code);AjaxResult ar = AjaxResult.success();ar.put("data", list);return ar;}}

        本小节将重点讲解后台接口控制层、业务层和对象访问层的设计与实现,同时给出了详细的代码,可以在项目中作为参考。

三、web可视化设计与实现

        本小节将重点介绍如何使用WebGIS来展示省会城市以及各地级市与省会城市的空间距离。这里依然采用Leaflet作为地图展示框架。由于很多的知识点在之前的博文中已经讲解,比如定义地图、添加地图瓦片等等知识都不再进行赘述。

1、省份范围展示

        省份范围在我们点击定位的时候,会请求后台的省份GeoJSON对象,前端仅需要对GeoJSON进行空间可视化即可。

function showProvince(id){var myStyle = {color:"white",weight:5,"opacity":1};$.ajax({  type:"get",  url:prefix + "/geojson/" + id,  data:{},  dataType:"json",  cache:false,processData:false,success:function(result){if(result.code == web_status.SUCCESS){var geojson = JSON.parse(result.data);var areaLayer = L.geoJSON(geojson,{style:myStyle}).addTo(mymap);showLayerGroup.addLayer(areaLayer);//同时设置中心位置和级别,一般省份设置为7mymap.setView(areaLayer.getBounds().getCenter(),7);}},error:function(){$.modal.alertWarning("获取空间信息失败");}});}

 行政区划范围展示示意图

2、城市距离可视化

        城市距离可视化,首先需要将各个城市展示出来,这里需要使用文本动态标注的方式。同时需要将城市间的距离也一并进行可视化,同样使用我们之前介绍过的canvaslabel组件。关键的初始化逻辑代码如下所示:

function showDistance(code){$.ajax({  type:"get",  url:prefix + "/datalist/" + code,  dataType:"json",  cache:false,processData:false,success:function(result){if(result.code == web_status.SUCCESS){var strokeStyleSet = "red";var lat,lng,cityInfo;for(var i=0;i<result.data.length;i++){var dataInfo = result.data[i];var geomObj = JSON.parse(dataInfo.geomJson);if(i == 0){lat = geomObj.coordinates[1];lng = geomObj.coordinates[0];cityInfo = dataInfo.name;continue;}var dist = dataInfo.dist;if(parseFloat(dist) <= 100000){strokeStyleSet = "green";}if(parseFloat(dist) > 100000 && parseFloat(dist) <= 160000 ){strokeStyleSet = "blue";}if(parseFloat(dist) >= 160000){strokeStyleSet = "red";}var _dist = parseFloat(dataInfo.dist / 1000).toFixed(2);var marker = L.circleMarker(new L.LatLng(geomObj.coordinates[1], geomObj.coordinates[0]), {radius: 8,labelStyle: {text: dataInfo.name,rotation: 0,zIndex: i,strokeStyle :strokeStyleSet},color : strokeStyleSet}).addTo(showLayerGroup);L.polyline([[[lat, lng],[geomObj.coordinates[1], geomObj.coordinates[0]]]], {labelStyle: {text:dataInfo.name + ":"  + _dist + "千米",zIndex: 0,collisionFlg: false,textAlign:'center',strokeStyle :strokeStyleSet},color : strokeStyleSet}).addTo(showLayerGroup);}}},error:function(){$.modal.alertWarning("获取信息失败");}});}

3、成果展示

        经过上述代码编写,基本已经完成各省省会城市与地级市(包含自治州)的空间距离可视化。下面我们来看一个省份的空间距离情况。

        江苏省中,距离南京市最近的是镇江市(60.78KM)、扬州市(68.81KM);最远的是徐州市(276.52KM),连云港市(283.91KM)。

        江苏省地级市距离示意图

         广东省中,离广州市最近的是佛山市(18.81KM)、东莞市(51.37KM),最远的是汕头市(350KM)、湛江市(363KM)。

广东省 地级市距离示意图

        下面来看我们幅员最辽阔的地方,新疆维吾尔自治区的空间距离。距离乌鲁木齐市最近的是昌吉回族自治州(32.24KM),其它都比较远了,喀什(1081.40KM),和田(989.58KM)。

新疆维吾尔族自治区地级市距离示意图

总结 

        以上就是本文的主要内容,本文将以之前管理的地名数据为例,基于SpringBoot和PostGIS详细讲解如何进行省会城市与省域内各城市之间的直线空间距离,如何将直线空间距离在WebGIS中进行地图可视化。文章首先讲解了空间数据库的设计和相关数据的查询方式,然后介绍了后台的设计与实现,最后详细介绍前端可视化的实现过程。行文仓促,难免有遗漏之处,欢迎各位专家朋友批评指导指正,不慎荣幸。

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

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

相关文章

充电桩选型对比:ESP32-S3模组和ESP32-C3模组谁更合适

随着新能源电车的普及&#xff0c;全国各地和海外都开始加紧安装充电桩&#xff0c;运城到2025年年底,实现充电桩城镇居住小区全覆盖&#xff0c;截至今年3月底,泉州市新增充电桩居民报装1.68万户。 启明云端是国内领先的物联网通讯产品和整体解决方案供应商&#xff0c;有非常…

Gromacs——教程学习(6)

谈谈怎么判断分子动力学模拟是否达到了平衡 在计算RMSD之前必须先通过最小二乘法将各帧结构相对于参考结构进行最大程度叠合&#xff0c;从而消除体系的整体运动而令RMSD只体现生物分子内部结构的变化&#xff0c;这称为align或者least squares fit。 需要注意的是&#xff0…

国产Sora诞生!清华团队发布Vidu大模型,可直接生成16秒视频

大模型之争已从单模态转向多模态。 4月27日&#xff0c;在2024中关村论坛年会未来人工智能先锋论坛上&#xff0c;清华大学联合北京生数科技有限公司正式发布了文生视频大模型——Vidu。 在会议上&#xff0c;清华大学人工智能研究院副院长、生数科技首席科学家朱军对外展示了…

stack,queue的模拟实现以及优先级队列

这篇博客用来记录stack&#xff0c;queue的学习。 stack的模拟实现 stack的模拟实现比较简单&#xff0c;先上代码 #pragma once #include<vector> #include<list> #include<deque> #include<iostream> using std::deque; using namespace std;name…

PyTorch中Torch.arange()函数详解

函数原型 arange(start0, end, step1, *, outNone, dtypeNone, layouttorch.strided, deviceNone, requires_gradFalse) -> Tensor 用法 返回大小为的一维张量&#xff0c;其值介于区间 为步长等间隔取值 参数说明 参数类型说明startNumber起始值&#xff0c;默认值&…

【Python的魅力】:利用Pygame实现游戏坦克大战——含完整源码

文章目录 一、游戏运行效果二、代码实现2.1 项目搭建2.2 加载我方坦克2.3 加载敌方坦克2.4 添加爆炸效果2.5 坦克大战之音效处理 三、完整代码 一、游戏运行效果 二、代码实现 坦克大战游戏 2.1 项目搭建 本游戏主要分为两个对象&#xff0c;分别是我方坦克和敌方坦克。用户可…

告别盲目投放,Xinstall让App广告效果一目了然

在移动互联网时代&#xff0c;App广告的投放已经成为企业营销的重要手段。然而&#xff0c;广告主在投放广告后&#xff0c;如何有效追踪广告效果、衡量广告ROI&#xff0c;一直是困扰他们的难题。今天&#xff0c;我们就来聊聊Xinstall这家国内专业的App全渠道统计服务商&…

计算一个结构的平方

在行列可自由变换的平面上计算3a1*3a1 得到的结构应该有9个点&#xff0c;并且点的分布有3a1的特征 这个9点结构可以化简成 1 1 1 1 1 1 1 1 1 显然这个结构可以再次平方&#xff0c;得到 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 …

python:reportlab 生成pdf:基本用法。

1.首先&#xff0c;打开cmd&#xff0c;安装reportlab pip install -i https://pypi.tuna.tsinghua.edu.cn/simple reportlab #从清华镜像安装更快 然后就可以使用其基本用法。 from reportlab.lib.pagesizes import letter from reportlab.pdfgen import canvasdef genera…

小程序评分/关键词/UV优化助力小程序登顶

随着小程序市场的日益繁荣&#xff0c;小程序搜索排名优化成为了众多开发者关注的焦点。小程序搜索排名被很多因素影响着&#xff0c;关键词、评分还有uv&#xff08;授权&#xff09;等。在本文小柚和各位老板分享如何有效优化小程序搜索排名的经验。 一、关键词策略 关键词是…

Python | Leetcode Python题解之第55题跳跃游戏

题目&#xff1a; 题解&#xff1a; class Solution:def canJump(self, nums: List[int]) -> bool:n, rightmost len(nums), 0for i in range(n):if i < rightmost:rightmost max(rightmost, i nums[i])if rightmost > n - 1:return Truereturn False

Web3的可持续性:构建环境友好的去中心化系统

引言 随着全球对可持续发展和环境问题的日益关注&#xff0c;Web3技术作为一种新型的互联网模式&#xff0c;也开始受到社区和开发者的关注。但很少有人关注到Web3对环境可持续性的潜在影响。本文将探讨Web3如何构建一个环境友好的去中心化系统&#xff0c;以及这如何促进一个…

偏微分方程算法之五点菱形差分法

目录 一、研究目标 二、理论推导 三、算例实现 四、结论 一、研究目标 上个专栏我们介绍了双曲型偏微分方程的主要算法及实现。从今天开始&#xff0c;我们在新的专栏介绍另一种形式偏微分方程-椭圆型的解法。 研究目标选取经典的二维椭圆型方程&#xff08;也称泊松Poisso…

马斯克突击访华;谷歌 Python 基础团队全数被裁;丨 RTE 开发者日报 Vol.195

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE&#xff08;Real Time Engagement&#xff09; 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…

python基础学习之写入csv文件

前言 在Python编程中&#xff0c;经常会遇到要将数据存到csv文件中&#xff0c;今天来详细讲一下。 一.功能目的 将以下数据存到csv文件中。 data [ {name: Alice, age: 25, city: New York}, {name: Bob, age: 30, city: Los Angeles}, {name: Charlie, age: 35, city:…

DS:单链表的实现

欢迎各位来到 Harper.Lee 的编程学习小世界&#xff01; 博主主页传送门&#xff1a;Harper.Lee的博客 我将在这里分享我的学习过程等心得 创作不易&#xff0c;码字不易&#xff0c;兄弟们养成先赞后看的好习惯哦&#xff01; 想一同进步的uu&#xff0c;可以来后来找我哦&…

Selenium IDE 常见错误笔记

错误1&#xff1a;Failed:Exceeded waiting time for new window to appear 2000ms 这个错误通常出现在第一次运行时&#xff0c;有两个原因&#xff1a; Firefox阻止了弹出式窗口&#xff0c;在浏览器设置里允许这个操作即可。 有些网站设置了反扒机制&#xff0c;脚本运行…

解决Blender导出FBX文件到Unity坐标轴错误的问题

发现Blender的模型导入到Unity里面有问题,简单研究了下发现是坐标系不同,Unity使用的是左手坐标系,Blender使用的是右手坐标系 。 下面直接将如何解决 首先忽略Blender的右手坐标系以及Z轴朝上的事&#xff0c;依照unity坐标系情况修改模型物体的旋转&#xff0c;以Blender猴…

算法工程师——算法岗的分类及要求汇总

算法岗工程师 根据 Talent Seer 人才报告显示,全球 AI 从业者总人数约有 30 万,还是供不应求,其中 AI 技术专家(具有相关领域博士学位及 3 年以上工作经验的)约有 3.65 万。 简介 对于计算机专业的毕业生而言,算法岗基本上就是 「高薪」 的代名词。 在当今 IT 行业,算…

【城市】2023深圳市定居与生活相关政策(含租房、租车)

【城市】2023深圳市定居与生活相关政策&#xff08;含租房、租车&#xff09; 文章目录 一、户籍身份1、深圳市居住登记凭证、居住证&#xff08;点击就送&#xff09;2、深圳落户&#xff08;点击就送1&#xff09; 二、人才补贴人才引进补贴&#xff08;含应届生&#xff09;…