Nominatim免费的地址解析,逆地址解析,OpenStreetMap开源地图数据【全网最全】

视频学习地址


国内的一些地址解析供应商的API都开始付费了,就想找个免费的地址解析和逆地址解析的应用,最终选择了Nominatim + OpenStreetMap

文章目录

    • 一、选型
      • 1-1、数据源
      • 1-2、地理编码引擎
      • 2-1、初尝Nominatim
        • 2-1-1、地址解析
        • 2-1-2、逆地址解析
      • 2-2、OSM数据解析
        • 2-2-1、place表
        • 2-2-2、placex表
      • 2-3、Nominatim和OSM数据关系映射
      • 2-4、举一反三
      • 2-5、Nominatim API解析
    • 三、安装
    • 四、关于数据源 (重要)
    • 五、替代方案
    • N、其它
      • N-1、place和placex
      • N-2、相关资料
      • N-3、测试覆盖
        • 地址解析
      • 逆地址解析


这篇文章将会从调研、选型、测试、应用全方面的解析,如果你也在找地址解析和逆地址解析的开源方案它一定会给你带来帮助

地址解析:通过一个地名(深圳),获取当前地方的经纬度、省市区级别
逆地址解析:通过经纬度,获取当前位置的名称、省市区级别


一、选型


1-1、数据源


对于地图解析这个应用来说,最重要不是软件部分,而是数据,只有数据全面了才有可能得出相对准确的结果。目前开源免费的全面的数据大概率只有 OpenStreetMap了,它是由各个国家的志愿者一起维护的数据

OpenStreetMap(后面简称OSM) 是一个众包的地图项目,旨在创建一个可自由编辑和使用的世界地图数据库。它由全球的志愿者贡献者更新和维护,提供了一个详细和准确的地理数据集合。OSM 数据包括道路、建筑物、自然特征、商业设施等(简单理解就是很多志愿者一起维护了一份地图数据


OpenStreeMap 相关文档链接 (后面会详解)

描述地址
官网https://www.openstreetmap.org
没有找到合适的中国数据,而且中国数据和台湾都是分开的,这必然不行,直接用亚洲的数据https://download.openstreetmap.fr/extracts/
每一个地址都会有标签,标签很多想知道某个标签的含义,可去标签系统搜索,下面会讲解https://taginfo.openstreetmap.org

1-2、地理编码引擎


调研时间:24年5月

开源方案NominatimPeliasPhoton
支持数据源OpenStreetMapOpenStreetMap、OpenAddresses、Geonames等OpenStreetMap
核心功能地理编码和逆地理编码地理编码和逆地理编码,支持全文搜索高效地进行地理编码和逆地理编码
开发语言Python、PHPTwigJava
GitHub关注数2.9K3.1K1.8K
GitHub最新版本时间2024-03-072024-03-06
GitHub待解决问题数9224257
GitHub活跃度高(去年发布10个版本)低(无正式版本)中(去年发布2个版本)
GitHub代码贡献者数902849
系统对接REST APIREST APIREST API

  1. Nominatim能满足功能需求,需要额外处理直辖市和港澳台问题
  2. Photon 不支持中文国际化,无法满足

Nominatim 是一个开源的地理编码引擎,专门用于从 OSM 数据中提取地理信息。它提供了两种主要功能:

  1. 地理编码:将地址转换为经纬度坐标
  2. 逆地理编码:将经纬度坐标转换为地址

Nominatim 的API其实已经研究过了是满足的,下面详细讲解它的API


2-1、初尝Nominatim


这个要VPN才可以访问

2-1-1、地址解析

请求地址

https://nominatim.openstreetmap.org/search?1=1&q=深圳市&format=geocodejson&addressdetails=1&accept-language=zh&zoom=8&limit=1

请求结果

{
    "type": "FeatureCollection",
    "geocoding": {
        "version": "0.1.0",
        "attribution": "Data © OpenStreetMap contributors, ODbL 1.0. http://osm.org/copyright",
        "licence": "ODbL",
        "query": "深圳市"
    },
    "features": [
        {
            "type": "Feature",
            "properties": {
                "geocoding": {
                    "place_id": 368109611,
                    "osm_type": "relation",
                    "osm_id": 3464353,
                    "osm_key": "boundary",
                    "osm_value": "administrative",
                    "type": "city",
                    "label": "深圳市, 广东省, 中国",
                    "name": "深圳市",
                    "state": "广东省",
                    "country": "中国",
                    "country_code": "cn",
                    "admin": {
                        "level5": "深圳市",
                        "level4": "广东省"
                    }
                }
            },
            "geometry": {
                "type": "Point",
                "coordinates": [
                    114.0545429,
                    22.5445741
                ]
            }
        }
    ]
}

2-1-2、逆地址解析

请求地址

https://nominatim.openstreetmap.org/reverse?format=geocodejson&lat=43.767755&lon=87.51623&addressdetails=1&accept-language=zh&zoom=8&limit=1

请求结果

{
    "type": "FeatureCollection",
    "geocoding": {
        "version": "0.1.0",
        "attribution": "Data © OpenStreetMap contributors, ODbL 1.0. http://osm.org/copyright",
        "licence": "ODbL",
        "query": ""
    },
    "features": [
        {
            "type": "Feature",
            "properties": {
                "geocoding": {
                    "place_id": 190215046,
                    "osm_type": "relation",
                    "osm_id": 5663100,
                    "osm_key": "boundary",
                    "osm_value": "administrative",
                    "type": "district",
                    "accuracy": 0,
                    "label": "沙依巴克区, 乌鲁木齐市, 新疆维吾尔自治区, 830000, 中国",
                    "name": "沙依巴克区",
                    "postcode": "830000",
                    "city": "乌鲁木齐市",
                    "state": "新疆维吾尔自治区",
                    "country": "中国",
                    "country_code": "cn",
                    "admin": {
                        "level6": "沙依巴克区",
                        "level5": "乌鲁木齐市",
                        "level4": "新疆维吾尔自治区"
                    }
                }
            },
            "geometry": {
                "type": "Point",
                "coordinates": [
                    87.46749,
                    43.726972
                ]
            }
        }
    ]
}

2-2、OSM数据解析


对于地图服务真正难的是数据,核心也还是OSM的数据,后面会讲怎么导入数据,这里先解析数据。把OSM的数据导入到 PostgreSQL后,它有两张重要的表,个人感觉对于一般应用来说,理解这两张表就够够了 (下面是我的理解,供参考)

  • place:place表维护的是每一条独立的数据(可以是一棵树、也可以是一条河、一个城市)
  • placex:因为地区是包含关系placex维护的是有关系的上下级数据

表字段很多,下面讲重要的,如果对这两张表结构感兴趣的可以参看下面的: N-1


2-2-1、place表

字段描述
osm_id数据的唯一id
osm_type数据类型:N、R、W (对表500w数据 distinct + 搜索)

1.节点(Node):存储为一个经纬度坐标点。例如,一个节点可能表示一个具体的地理位置,如一座建筑物的角落或一棵树
2.路径(Way):由一系列节点组成,每个节点都有其自己的经纬度坐标。路径可以表示线性特征(如道路)或闭合区域(如湖泊)
3.关系(Relation):由多个节点和路径组成,表示更复杂的地理特征和逻辑关系,如边界、多边形区域或路线
class这两个字段是一起的 key=value,是对这条数据打的标签,目前有 9w+个key

highway=secondary
1. highway标签是用于任何类型道路的主要标签
2. highway=secondary 次要道路是连接重要城镇的道路

注:https://taginfo.openstreetmap.org 因为key=value 太多了,官方有专门维护描述
type
admin_level当前数据的等级,数据库有 1-15级 (抽样查看了每一层的数据,并不是特别的标准)
name当前数据的各种语言的描述,地址解析的时候我猜就是匹配这个字段

eg:
“name”=>“深圳市”, “name:af”=>“Shenzhen”, “name:ar”=>“شنجن (الصين)”, “name:az”=>“Şençjen”, “name:ba”=>“Шэньчжэнь”, “name:be”=>“Шэньчжэнь”,
geometry当前数据的经纬度,数据存在多种可能性,比如点、线、多线、多边形、几何图形 等

注:数据并不全是存的明文,有些是加密的,可以通过在线工具解密https://www.zaixianjisuan.com/dilicesuan/wkt%20_%20wkb%20_%20geojson%20convert%20online.html

geometry 存储数据样例

POINT(117.1767305 39.1448629)
LINESTRING(117.1847722 39.1481168, 117.1845921 39.1481353)
POLYGON((117.1829091 39.1494689, 117.182913 39.1494281, 117.1829335 39.1493904, 117.1829685 39.1493598, 117.1830143 39.1493394, 117.183066 39.1493315, 117.1831199 39.1493372, 117.1831478 39.1493482, 117.1831683 39.1493563, 117.183206 39.1493867, 117.1832286 39.1494251, 117.1832337 39.149467, 117.1832206 39.149508, 117.183191 39.1495433, 117.183148 39.1495691, 117.1830964 39.1495825, 117.183042 39.1495819, 117.1829924 39.1495681, 117.182951 39.1495428, 117.1829222 39.1495085, 117.1829091 39.1494689))

2-2-2、placex表

placex 表的关键信息,它很多字段和place表一样

字段名描述
place_id数据的唯一id
parent_place_id上级id
importance数据权重,匹配到多条数据,这个字段是排序规则之一
centroid当前区域的中心点 (是个POINT类型的 经纬度,参看上面的 geometry)
postcode邮编
country_code国家编码 cn
osm_type同 place表
osm_id同 place表
class同 place表
type同 place表
admin_level同 place表
name同 place表
geometry同 place表

这个表数据很重要,解析和逆解析都是对这个表进行搜索


2-3、Nominatim和OSM数据关系映射


Nominatim和OpenStreetMap 字段映射关系(从上面的返回值抽取稳定有用的字段)

Nominatim 返回字段OpenStreeMap 字段(对应表 placex)
place_idplace_id
osm_idosm_id
osm_typeosm_type
osm_keyclass
osm_valuetype
admin[]在 placex 表有个parent_place_id,一直向上取到 parent_place_id = 0

key = level + admin_level
value = name -> ‘name’
postcodepostcode
labeladmin + postcode
geometrycentroid

2-4、举一反三


通过上面的分析得出2点

  1. Nominatim 就是一个地图搜索引擎,用的是OSM的数据
  2. Nominatim 不管是解析还是逆解析返回的都是 placex 表的某条数据(place_id)

通过对数据的分析和一些文档描述,大概知道了它搜索的逻辑地址解析就是去模糊匹配 name,逆地址解析就是拿入参的经纬度去找数据库距离最近权重最高的数据返回


地址解析SQL

SELECT
    place_id,
    ST_AsText(geometry) AS geometry
FROM placex
WHERE name -> 'name' ILIKE '%中国%'
AND importance IS NOT NULL
ORDER BY importance DESC 
LIMIT 1;

逆地址解析SQL

SELECT  
    place_id,
    ST_X(centroid) AS lon,
    ST_Y(centroid) AS lat,
    ST_Distance(geometry::geography, ST_SetSRID(ST_MakePoint(90.392926,30.014464), 4326)::geography) AS distance
FROM placex
WHERE 
    ST_Distance(geometry::geography, ST_SetSRID(ST_MakePoint(90.392926,30.014464), 4326)::geography) BETWEEN 1 AND 1000
ORDER BY
    distance ASC,
    importance DESC
LIMIT 1;

测试结果和Nominatim返回的结果相似度90%+,但性能没法比,SQL运行结果很慢


2-5、Nominatim API解析


https://nominatim.openstreetmap.org/search?1=1&q=深圳市&format=geocodejson&addressdetails=1&accept-language=zh&zoom=8&limit=1
https://nominatim.openstreetmap.org/reverse?format=geocodejson&lat=43.767755&lon=87.51623&addressdetails=1&accept-language=zh&zoom=8&limit=1

上面这两个URL在绝大部分场景下,已经是最佳答案了,如果你还需要其它的请参考官方API文档

  • https://nominatim.org/release-docs/develop/api/Search/
  • https://nominatim.org/release-docs/develop/api/Reverse/

字段描述
q文本查询 (不和省、市、区 这些字段一起使用)
format返回的数据格式,相信我 geocodejson 是最好的格式,因为它最接近数据库的数据
addressdetails是否返回地址详情
accept-languagezh 返回中文,不然可能会有少数民族文字
limit限制返回条数(数据已经是按照权重排好序了,大部分场景只要一条数据,所以 limit=1)
zoom=8返回的层级 4级基本是省份,5级基本是城市 (建议带上这个参数,不然极少数情况会出错,作者说的)
lat、lon经纬度

三、安装


https://download.openstreetmap.fr/extracts/asia.osm.pbf 下载亚洲的 PBF文件 (先看四)

然后去你的服务上用docker安装(差不多要300G磁盘),执行过程大概4天半左右

docker run -d -it 
--shm-size=12g -e 
PBF_PATH=/nominatim/osm_data/下载下来的数据.pbf 
-e IMPORT_STYLE=address 
-e NOMINATIM_FLATNODE_FILE=/nominatim/flat_data/flatnode.file 
-p 8090:8080 -p 5432:5432 
-v /nominatim/flat_data:/nominatim/flat_data 
-v /nominatim/osm_data:/nominatim/osm_data 
--name planet mediagis/nominatim:4.4



官网dockert安装地址:https://github.com/mediagis/nominatim-docker/tree/master/4.4

非docker安装需要很多各种依赖较为麻烦


四、关于数据源 (重要)


尝试过的数据源

问题数据范围数据源
Nominatim不支持map和img格式中国https://download3.bbbike.org/osm/garmin/region/asia/china/
Nominatim不支持map和img格式中国https://download3.bbbike.org/osm/mapsforge/region/asia/china/
数据不全,部分数据有问题中国https://download.openstreetmap.fr/extracts/asia/china-latest.osm.pbf
数据不全,部分数据有问题中国https://download.geofabrik.de/asia.html
数据不全,部分数据有问题中国https://osmtoday.com/asia.html
完美 亚洲https://download.openstreetmap.fr/extracts/asia.osm.pbf

数据源相关文章:

https://wiki.openstreetmap.org/wiki/Zh-hans:Planet.osm
https://www.chinaflier.com/thread-202695-1-1.html
https://github.com/osm-search/Nominatim/discussions/3434


尝试了很多的中国数据一直都不准,最后抱着试试的心理尝试了亚洲的数据,完美

  • 服务器:4核32G
  • 亚洲 pbf 15g
  • 导入时间 4天半
  • 消耗空间 277G

在这里插入图片描述


五、替代方案


如果你只是需要简单的地址解析和逆地址解析,其实也不用如此大费周章,可以参看:

https://blog.csdn.net/Tomwildboar/article/details/139882311


N、其它


N-1、place和placex

CREATE TABLE "public"."place" (
  "osm_type" char(1) COLLATE "pg_catalog"."default" NOT NULL,
  "osm_id" int8 NOT NULL,
  "class" text COLLATE "pg_catalog"."default" NOT NULL,
  "type" text COLLATE "pg_catalog"."default" NOT NULL,
  "admin_level" int2,
  "name" "public"."hstore",
  "address" "public"."hstore",
  "extratags" "public"."hstore",
  "geometry" geometry(GEOMETRY, 4326) NOT NULL
)

CREATE TABLE "public"."placex" (
  "place_id" int8 NOT NULL,
  "parent_place_id" int8,
  "linked_place_id" int8,
  "importance" float8,
  "indexed_date" timestamp(6),
  "geometry_sector" int4,
  "rank_address" int2,
  "rank_search" int2,
  "partition" int2,
  "indexed_status" int2,
  "osm_type" char(1) COLLATE "pg_catalog"."default" NOT NULL,
  "osm_id" int8 NOT NULL,
  "class" text COLLATE "pg_catalog"."default" NOT NULL,
  "type" text COLLATE "pg_catalog"."default" NOT NULL,
  "admin_level" int2,
  "name" "public"."hstore",
  "address" "public"."hstore",
  "extratags" "public"."hstore",
  "geometry" geometry(GEOMETRY, 4326) NOT NULL,
  "wikipedia" text COLLATE "pg_catalog"."default",
  "token_info" jsonb,
  "country_code" varchar(2) COLLATE "pg_catalog"."default",
  "housenumber" text COLLATE "pg_catalog"."default",
  "postcode" text COLLATE "pg_catalog"."default",
  "centroid" geometry(GEOMETRY, 4326)
)
;

N-2、相关资料


描述地址
OSM 官网https://www.openstreetmap.org
OSM官方对中国地图的描述https://wiki.openstreetmap.org/wiki/Zh-hans:%E4%B8%AD%E5%8D%8E%E4%BA%BA%E6%B0%91%E5%85%B1%E5%92%8C%E5%9B%BD
数据标签查询https://taginfo.openstreetmap.org
Nominatim 地址解析APIhttps://nominatim.org/release-docs/develop/api/Search/
Nominatim 逆地址解析APIhttps://nominatim.org/release-docs/develop/api/Reverse/
Nominatim docker安装地址https://github.com/mediagis/nominatim-docker/tree/master/4.4
官网API查询数据没有 level5问题https://github.com/osm-search/Nominatim/issues/3437
官方说明只能导入 pbf、osm 格式https://github.com/osm-search/Nominatim/discussions/3436
pbf、bz2、shp.zip 数据格式含义https://download.geofabrik.de/technical.html
数据源https://download.geofabrik.de/asia.html(福建省数据不是很准)
数据源https://download3.bbbike.org/osm/garmin/region/asia/china/ (Nominatim不支持map和img格式)
数据源https://osmtoday.com/asia.html (数据不全,部分数据有问题))
数据源https://download.openstreetmap.fr/extracts/asia/china-latest.osm.pbf(数据不全,部分数据有问题)
百度提供的在线经纬度获取https://api.map.baidu.com/lbsapi/getpoint/index.html
经纬度在线解析https://www.zaixianjisuan.com/dilicesuan/wkt%20_%20wkb%20_%20geojson%20convert%20online.html
其它阅读https://wiki.openstreetmap.org/wiki/Zh-hans:Planet.osm
https://www.chinaflier.com/thread-202695-1-1.html
https://github.com/osm-search/Nominatim/discussions/3434

![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/4a5235b6e1154bb3af4fcc489ad633ad.png)

N-3、测试覆盖


我此次的需求只需要精确到 省、市,直接用GPT列举出全部的市级以上的数据,然后再自己每个省份描点经纬度100个,再让GPT生成随机每个省的经纬度 1000个。

让自建API和腾讯API进行对比,问题如下


地址解析
  1. 香港、澳门,腾讯的是带了 【行政区】 后缀,且存在部分的繁体字
  2. 台湾 腾讯返回的都是简体字,自建地图大部分数据返回的是繁体字

逆地址解析

入参自建腾讯百度
110.39119,20.091971{longitude=110.3715545, latitude=20.0748919, nation=‘中国’, province=‘海南省’, city=‘海口市’}{nation=‘中国’, province=‘中国区域’, city=‘’, district=‘’, street=‘’}海南省海口市美兰区
101.808916,36.653178{longitude=101.8128242, latitude=36.649104, nation=‘中国’, province=‘青海省’, city=‘西宁市’}{nation=‘中国’, province=‘青海省’, city=‘海东市’, district=‘互助土族自治县’, street=‘’}青海省西宁市城北区
91.276412,29.525961{longitude=91.4130822, latitude=29.2551346, nation=‘中国’, province=‘西藏自治区’, city=‘山南市’}{nation=‘中国’, province=‘西藏自治区’, city=‘拉萨市’, district=‘城关区’, street=‘’}西藏自治区山南市扎囊县
113.795412,34.887975{longitude=113.7888121, latitude=34.921496, nation=‘中国’, province=‘河南省’, city=‘新乡市’}{nation=‘中国’, province=‘河南省’, city=‘郑州市’, district=‘惠济区’, street=‘’}河南省郑州市惠济区
112.12054,40.707765{longitude=112.120318174164, latitude=40.71081296482041, nation=‘中国’, province=‘内蒙古自治区’, city=‘乌兰察布市’}{nation=‘中国’, province=‘内蒙古自治区’, city=‘呼和浩特市’, district=‘赛罕区’, street=‘’}内蒙古自治区呼和浩特市赛罕区
113.273535,27.875086{longitude=113.7001702, latitude=28.2178951, nation=‘中国’, province=‘湖南省’, city=‘长沙市’}{nation=‘中国’, province=‘湖南省’, city=‘株洲市’, district=‘荷塘区’, street=‘’}湖南省株洲市荷塘区X004(宋芷路)
101.885386,36.529808{longitude=101.9975, latitude=36.399977, nation=‘中国’, province=‘青海省’, city=‘海东市’}{nation=‘中国’, province=‘青海省’, city=‘西宁市’, district=‘湟中区’, street=‘’}青海省西宁市湟中区
121.827422,24.73118{longitude=120.9820179, latitude=23.9739374, nation=‘中国’, province=‘臺灣’, city=‘臺灣’}{nation=‘中国’, province=‘台湾省’, city=‘宜兰县’, district=‘壮围乡’, street=‘’}台湾省宜兰县

结论

1.现在的亚洲的数据和官网几乎一样
2.和腾讯比,也只有很少边界的地方存在误差

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HarmonyOS角落里的知识—Stage模型应用程序

开发态包结构 在DevEco Studio上创建一个项目工程,并尝试创建多个不同类型的Module。根据实际工程中的目录对照本章节进行学习,可以有助于理解开发态的应用程序结构。 图1 项目工程结构示意图(以实际为准) 工程结构主要包含的文…

RabbitMQ —— 理解及应用场景

一、MQ相关的概念 RabbitMQ 是一种分布式消息中间件,消息中间件也称消息队列MQ,那么什么是MQ呢?请继续阅读下文。 1.1、MQ的基本概念 什么是MQ MQ(message queue),从字面意思上看就个 FIFO 先入先出的队列,只不过队列…

工业互联网的独特UI风格

工业互联网的独特UI风格

纯血鸿蒙 璀璨星河

点击上方蓝字关注我,知识会给你力量 华为最近可谓是加班加点,前段时间华为给出了鸿蒙系统的计划表,让大家都摩拳擦掌,想看看华为到底有几把刷子,这次的621HDC大会,就是华为给全世界的第一个交待。 最近在网…

锂磷硫(LPS)属于硫化物固态电解质 Li7P3S11是代表性产品

锂磷硫(LPS)属于硫化物固态电解质 Li7P3S11是代表性产品 锂磷硫(LPS),为非晶态材料,是硫化物固态电解质代表性产品之一,具有热稳定性好、成本较低等优点,在固态电解质中离子电导率较…

外卖APP开发详解:从同城O2O系统源码开始

近期,从事软件开发的小伙伴们都在讨论外卖APP,热度非常之高,所以小编今天将与大家一同探讨同城O2O系统源码、外卖APP开发。 一、外卖APP开发的前期准备 了解目标用户的需求,分析竞争对手的优劣势,明确自身的市场定位。…

Excel 导入实例

在上一节的基础上&#xff0c;本文演示下如何导入excel数据。 Excel导入操作指导 继承ocean-easyexcel SDK&#xff0c;上一节打包生成 <dependency><groupId>com.angel.ocean</groupId><artifactId>ocean-easyexcel</artifactId><version…

VB验证密码

在文本框中输入密码&#xff0c;“验证密码”按钮检验输入的是否为“123456”。“清空”按钮清空文本框。“结束”按钮关闭窗体。 Public Class Form1Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.ClickDim P$P Trim(TextBox1.Text)If P &…

第13章.创建MDK工程-基于标准库版

目录 0. 《STM32单片机自学教程》专栏 13.1 新建本地工程文件夹 13.2 新建工程 13.2.1 新建工程 13.2.2 新建组 13.2-3 添加文件 13.3 配置魔术棒选项卡 13.3.1 Output 选项卡 13.3.2 C/C选项配置 13.3.3 Dubug选项配置 13.4 使用标准库点亮LED 参考资料&#xff1…

分布式锁(Redission)

分布式锁&#xff1a; 使用场景&#xff1a; 通常对于一些使用率高的服务&#xff0c;我们会进行多次部署&#xff0c;可能会部署在不同的服务器上&#xff0c;但是他们获取和操作的数据仍然是同一份。为了保证服务的强一致性&#xff0c;我们需要对线程进行加锁&#xff0c;…

Appium Android 自动化测试 -- 元素定位

自动化测试元素定位是难点之一&#xff0c;编写脚本时会经常卡在元素定位这里&#xff0c;有时一个元素能捣鼓一天&#xff0c;到最后还是定位不到。 Appium 定位方式和 selenium 一脉相承&#xff0c;selenium 中的定位方式Appium 中都支持&#xff0c;而 Appium 还增加了自己…

2021数学建模C题目– 生产企业原材料的订购与运输

C 题——生产企业原材料的订购与运输 思路&#xff1a;该题主要是通过对供应商的供货能力和运送商的运货能力进行估计&#xff0c;给出合适的材料订购方案 程序获取 第一题问题思路与结果&#xff1a; 对 402 家供应商的供货特征进行量化分析&#xff0c;建立反映保障企业生…

迈向百亿亿次人工智能数据基础设施

对我来说&#xff0c;在MinIO已经一个多星期了。沉浸在白板会议、架构审查和客户电话中的最大收获是&#xff0c;产品的简单性既是其显着特征&#xff0c;也是其最具决定性的价值驱动因素之一。在规模上尤其如此。由于人工智能的进步&#xff0c;计算能力的爆炸性增长对数据格局…

数据集标注研究

主要研究数据集标注存储文件的数据存储格式 目录 0.简介1.coco128-seg数据格式1.1 分割标注格式2.YOLO格式2.1 YOLO目标识别标签2.2 yolov5-seg分割标签2.TT100K数据集标注2.1 TT100K数据集标注文件解析0.简介 1.coco128-seg数据格式 1.1 分割标注格式 如coco128-seg数据集 …

Pikachu靶场--XSS

参考借鉴 Pikachu靶场之XSS漏洞详解_pikachu xss-CSDN博客 一个视频讲清楚XSS跨站脚本&#xff08;CTF教程&#xff0c;Web安全渗透测试入门&#xff09;_bilibili 反射型xss(get) 输入payload&#xff1a;<script>alert(123)</script> 解决一&#xff1a;在URL框内…

展讯-QMI8658和气压传感器驱动调试

1.调试QMI8658 参考demo&#xff0c;添加QMI8610相关内容 当前驱动路径位于&#xff1a;bsp/modules/input/misc/qmi8610/qmi8610.c 编译使用make sockoimage 用fastboot烧录 1.确定驱动被正常加载 代码添加之后&#xff0c;首先确定有没有进入当前驱动文件 dmesg |grep …

Python+Selenium自动化入门

本章内容需有一定Python基础&#xff0c;如何不懂的&#xff0c;请先学习Python。 什么&#xff1f;&#xff1f;没有好的学习资料&#xff0c;给你准备好了&#xff01;&#xff01; Web自动化环境搭建 1、软件准备 python64位安装包chrome64位浏览器&驱动浏览器驱动下…

聚道云软件连接器:打破壁垒,实现数电票与航信的无缝对接

一、客户介绍 某网络科技有限公司是一家专注于数字化解决方案的创新型企业。公司致力于为企业提供高效、便捷的科技服务&#xff0c;尤其在发票管理领域具有深厚的技术积累和丰富的实践经验。该公司凭借先进的软件连接技术和优质的服务&#xff0c;赢得了众多客户的信赖和好评…

TF-IDF在现代搜索引擎优化策略中的作用

TF-IDF&#xff08;Term Frequency-Inverse Document Frequency&#xff09;是一种用于文本挖掘和信息检索的统计方法&#xff0c;用来评估一个词语对于一个文档或一个语料库的重要程度。TF-IDF算法结合了词频&#xff08;TF&#xff09;和逆文档频率&#xff08;IDF&#xff0…

TOPGP-TIPTOP调用外部Webservice

功能要求&#xff1a;ERP作业调用外部系统的webserice更新数据。 演示环境&#xff1a;ERP作业cooi002&#xff08;员工档案&#xff09;录入后更新到外部系统员工档案表。 1、外部系统的WebSerice使用.net搭建 2、在Service.cs中写一个调用方法erp_other erp_other中两个参数…