elliotsawyer / nzstreets
使用LINZ地址数据的新西兰街道地址数据库
Requires
Suggests
- silverstripe/cms: Allows you to easily edit file permissions in the CMS
This package is auto-updated.
Last update: 2024-08-29 00:28:44 UTC
README
使用LINZ地址数据进行地址查找。
使用0.0.x标签为SilverStripe 3安装。SilverStripe 4支持将从0.1.x版本处理。
安装
将仓库添加到您的composer.json文件中
"repositories": [
{
"type": "vcs",
"url": "git@github.com:elliot-sawyer/silverstripe-nzstreets.git"
}
]
将项目添加到composer.json的require部分
"require": {
...
"elliot-sawyer/nzstreets": "^0.1"
...
设置
Composer应将仓库放置在您的webroot中。
在routes.yml中创建一个新的路由。您可以将address
更改为任何满足您需求的url_segment
SilverStripe\Control\Director:
rules:
'address//$Action/$ID/$Name': 'ElliotSawyer\NZStreets\NZStreetAddressController'
从https://data.linz.govt.nz/layer/3353-nz-street-address/data/下载CSV数据源
这是一个非常大的文件(解压后500+ MB)并包含超过190万条记录。提供的导入器将工作,但速度非常慢:您应仅用于较小的文件子集,或作为最后手段使用整个集合。为了获得最快的结果,请使用mysqladmin或类似数据库工具将其侧载。
使用方法
此模块是为了填充到自动建议地址查找而创建的,适合此目的。
现在您可以搜索以您的查询开始的地址。例如
- https://yoursite/address/search?q=101-103
- https://yoursite/address/search?q=2/133
- https://yoursite/address/search?q=14+L
默认限制为10个结果。您可以在config.yml中覆盖此限制
ElliotSawyer\NZStreets\NZStreetAddressController:
search_limit: 5
每个搜索结果都包含一个AddressID。要获取有关地址的更多详细信息,您可以按该ID进行查询
侧载
使用dev/build命令构建表。您可以使用以下查询将CSV文件侧载到MySQL中
LOAD DATA LOCAL INFILE '/path/to/your/nz-street-address.csv' INTO TABLE NZStreetAddress FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES (WKT,AddressID,ChangeID,AddressType,UnitValue,AddressNumber,AddressNumberSuffix,AddressNumberHigh,WaterRouteName,WaterName,SuburbLocality,TownCity,FullAddressNumber,FullRoadName,FullAddress,RoadSectionID,Longitude,Latitude,@dummy,@dummy,@dummy,@dummy,@dummy,@dummy,ShapeX,ShapeY) SET ClassName="ElliotSawyer\\NZStreets\\NZStreetAddress", LastEdited=NOW(), Created=NOW();
MySQL的新版本将此过程视为安全风险,因此您可能需要在服务器和客户端上启用一些功能才能使其发生。在侧载过程完成后,请考虑撤销这些更改;
在MySQL数据库级别(必须是root) SET GLOBAL local_infile=1;
退出MySQL并使用客户端上的标志重新连接: mysql -u root -p --local-infile=1
贡献
非常欢迎贡献!请在Github仓库中提出一些问题或创建拉取请求。
支持
需要更多帮助或只是喜欢我的工作?如果您觉得这个模块帮您解决了问题,请考虑给我买杯咖啡或小额捐赠。我接受以下地址的加密货币
- 比特币:12gSxkqVNr9QMLQMMJdWemBaRRNPghmS3p
- 比特币现金:1QETPtssFRM981TGjVg74uUX8kShcA44ni
- 莱特币:LbyhaTESx3uQvwwd9So4sGSpi4tTJLKBdz
- 以太坊:0x0694E0704c70D8d178dd2e9522FC59EBBEe86748