{"id":22533609,"url":"https://github.com/php-lsys/area-db","last_synced_at":"2025-08-04T02:31:08.640Z","repository":{"id":185201148,"uuid":"666480534","full_name":"php-lsys/area-db","owner":"php-lsys","description":"https://github.com/shanliu/lsys/tree/main/server/lsys-lib-area","archived":true,"fork":false,"pushed_at":"2024-03-18T10:04:54.000Z","size":80765,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-03-28T05:43:12.239Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/php-lsys.png","metadata":{"files":{"readme":"README.MD","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-07-14T16:16:21.000Z","updated_at":"2024-03-18T10:16:53.000Z","dependencies_parsed_at":"2024-12-07T09:18:46.389Z","dependency_job_id":null,"html_url":"https://github.com/php-lsys/area-db","commit_stats":null,"previous_names":["shanliu/area-db","php-lsys/area-db"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/php-lsys/area-db","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/php-lsys%2Farea-db","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/php-lsys%2Farea-db/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/php-lsys%2Farea-db/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/php-lsys%2Farea-db/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/php-lsys","download_url":"https://codeload.github.com/php-lsys/area-db/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/php-lsys%2Farea-db/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268639931,"owners_count":24282678,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-04T02:00:09.867Z","response_time":79,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-07T09:08:55.272Z","updated_at":"2025-08-04T02:31:05.330Z","avatar_url":"https://github.com/php-lsys.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n已迁移到:[lsys/server/lsys-lib-area](https://github.com/shanliu/lsys/tree/main/server/lsys-lib-area) \n\n### 5级行政区域数据\n\n\u003e Rust 实现 省市县镇村 数据查询 名称模糊搜索 及坐标对应城市搜索\n\n\u003e [c的ffi示例](wrappers/c_dome/main.c)，可以通过ffi转接到其他语言上,示例:[php扩展](wrappers/php)\n\n#### 包含以下数据：\n\n1. 五级行政区域数据库: [sqlite数据](data/area-data-sqlite.7z) [csv数据](data/2023-7-area-code.csv.gz)\n\n2. 县区级经纬度坐标数据 [sqlite数据](data/area-data-sqlite.7z) [csv数据](data/2023-7-area-geo.csv.gz)\n\n\n#### 基于 axum 的示例\n```\ncd examples/axum ; cargo run\n#测试接口\ncurl 'http://127.0.0.1:8081/area/geo?lat=22.57729\u0026lng=113.89409'\ncurl http://127.0.0.1:8081/area/list?code=1101\ncurl http://127.0.0.1:8081/area/related?code=4414\ncurl http://127.0.0.1:8081/area/find?code=4414\ncurl http://127.0.0.1:8081/area/search?key_word=%E6%B7%B1%E5%9C%B3%20%E5%B8%83%E5%90%89\n```\n```\n#在线示例\ncurl 'http://www.lsys.cc:8081/area/geo?lat=22.57729\u0026lng=113.89409'\ncurl http://www.lsys.cc:8081/area/list?code=1101\ncurl http://www.lsys.cc:8081/area/related?code=4414\ncurl http://www.lsys.cc:8081/area/find?code=4414\ncurl http://www.lsys.cc:8081/area/search?key_word=%E6%B7%B1%E5%9C%B3%20%E5%B8%83%E5%90%89\n```\n\n\n##### 代码示例:\n\n1. 请先下载CSV数据文件到你的项目：[城市数据示例](data/2023-7-area-code.csv.gz) [城市坐标示例](data/2023-7-area-geo.csv.gz) \n\n\u003e csv数据源使用示例\n\n```toml\n#cargo.toml 默认仅引入:data-csv \narea-db = { version = \"~0.1.*\"}\n```\n\n```rust\nlet code_path = PathBuf::from(\"data/2023-7-area-code.csv.gz\");\nlet geo_path = PathBuf::from(\"data/2023-7-area-geo.csv.gz\");\nlet data = area_db::CsvAreaData::new(\n    area_db::CsvAreaCodeData::from_inner_path(code_path, true).unwrap(),\n    Some(area_db::CsvAreaGeoData::from_inner_path(geo_path, true).unwrap()),\n);\nlet area = area_db::AreaDao::from_csv_mem(data, AreaStoreMemory::default()).unwrap();\n//使用文件索引，减少内存使用，接口速度比mem，但省内存\n// let area = area_db::AreaDao::from_csv_disk(data, AreaStoreDisk::new(PathBuf::from(\"./tmp\"), None).unwrap()).unwrap();\n```\n\n2. 请先下载sqlite数据到你的项目 [内置的包含5级行政区域跟坐标的sqlite数据](data/area-data-sqlite.7z) `解压后使用` \n\n\u003e 如果你已经装了lib-sqlite的库，可用:`data-sqlite` 会使用系统的sqlite库. 具体参见crate:`rusqlite`实现\n\n\u003e 如果你未安装lib-sqlite的库，可用:`data-sqlite-source` 会通过c源码编译sqlite库.\n\n\u003e sqlite数据源使用示例\n\n```toml\n#cargo.toml\narea-db = { version = \"~0.1.*\", default-features=false,features=[\"data-sqlite-source\"]}\n```\n\n```rust\nlet conn = \"data/area-data.db\";\nlet sqlite = area_db::SqliteAreaData::new(\n    area_db::SqliteAreaCodeData::from_path(PathBuf::from(\u0026conn)),\n    Some(area_db::SqliteAreaGeoData::from_path(PathBuf::from(\u0026conn))),\n);\n\nlet area = area_db::AreaDao::from_sqlite_mem(sqlite, AreaStoreMemory::default()).unwrap();\n//使用文件索引，减少内存使用，接口速度比mem，但省内存\n// let area = area_db::AreaDao::from_sqlite_disk(sqlite, AreaStoreDisk::new(PathBuf::from(\"./tmp\"), None).unwrap()).unwrap();\n```\n\n3. 使用mysql作为数据来源：[表定义](data/mysql-table.sql) 数据可以把以上的csv数据导入进去\n\n\u003e mysql数据库作为数据源的示例\n\n```toml\n#cargo.toml\narea-db = { version = \"~0.1.*\", default-features=false,features=[\"data-mysql\"]}\n```\n\n```rust\nlet pool = \"mysql://***:***@127.~0.0.*:3306/***\";\nlet mysql = area_db::MysqlAreaData::new(\n    area_db::MysqlAreaCodeData::from_uri(pool),\n    Some(area_db::MysqlAreaGeoData::from_uri(pool)),\n);\nlet area = area_db::AreaDao::from_mysql_mem(mysql, AreaStoreMemory::default()).unwrap();\n//使用文件索引，减少内存使用，接口速度比mem，但省内存\n// let area = area_db::AreaDao::from_mysql_disk(mysql, AreaStoreDisk::new(PathBuf::from(\"./tmp\"), None).unwrap()).unwrap();\n```\n\n4. 数据更新时重新加载数据\n\n```rust\nlet area = area_db::AreaDao::from_*(...).unwrap();\narea.geo_reload().unwrap();//重新加载GEO数据\narea.code_reload().unwrap();//重新加载CODE数据\n```\n\n5. FFI导出\n\n\u003e 默认不引入 `lib-clib` ,需要FFI请开启\n```\ncargo build --features \"lib-clib\" \n```\n```toml\n#修改 cargo.toml 添加 lib-clib\narea-db = { version = \"~0.1.*\",features=[\"lib-clib\"]}\n```\n\n\n##### 可用的查询方法\n\n1. 查询 省市县镇村 可用在地址选择多级联动接口\n\n```rust\nlet child=\"\";//空列出省级，把省级的code转入列出市级..依次完成\nlet res = area.code_childs(child).unwrap();\nprintln!(\"{}\", \u0026res);\n```\n\n2. 查询 指定code 的相关数据\n\n```rust\nlet child=\"441403133\";//地址code\nlet res = area.code_related(child).unwrap();\nprintln!(\"{}\", \u0026res);\n```\n\n3. 查询 指定code 的详细地址信息\n\n\u003e 可用于系统内的code到地址转换\n\n```rust\nlet child=\"441403133\";//地址code\nlet res = area.code_find(child).unwrap();\nprintln!(\"{}\", \u0026res);\n```\n\n4. 搜索任意地址，返回匹配的地址信息\n\n```rust\nlet child=\"guang dong\";//地址信息 在比如: 广东 布吉\nlet limit = 10;//返回匹配数量\nlet res = area.code_search(child, limit).unwrap();\nprintln!(\"{}\", \u0026res);\n```\n\n5. 返回指定坐标的地址信息\n\n\u003e 可用手机根据geo信息自动填写当前位置收货地址\n\n\u003e 目前到市一级，因为只找到了市一级的坐标数据\n\n```rust\nlet res = area.geo_search(  26.61474,  114.13548 , ).unwrap();\nprintln!(\"{}\", \u0026res);\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphp-lsys%2Farea-db","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphp-lsys%2Farea-db","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphp-lsys%2Farea-db/lists"}