任何一个计算机程序要实现100%自动化只在理想情况中可行,因此我们不追求100%自动化,我们想实现一个在大多数时候(比如90%以上)都能自动判定的解决方案。
首先我们来分析一下送货范围的定义和地址之间的关系。
在城市之外的农村,完整的地址一般会按照行政区划关系来书写,比如“XX县XX乡(镇)XX村X号”。这样的地址结构属于树形结构,事先准备好数据,判定工作不会很困难。(当然数据的准备工作量是很大的。)
对于农村的送货范围定义,也可以考虑以树型的方式定义。比如:
(1)XX县:a.不配送,b.可配送,c.可配送但不包括子级(即只送城关镇)
(2)XX乡(镇):a.不配送,b.可配送,c.可配送但不包括子级(即只送乡镇政府所在地)
(3)XX村:a.不配送,b.可配送
这样的数据结构可以较好的定义农村区域的送货范围。
目前来说,快递公司的多数业务在城区,农村的快递业务几乎还处于试点阶段,多数县乡村是无法配送的,则直接标记父级节点为a,即可完成整个县或整个乡镇的定义。配置过程并不算复杂,而且对于将来的业务扩展也做好了准备。
对于城市,问题就较为复杂了。城市里地址一般以街道门牌体系来书写,比如先写“中关村南大街9号”,然后写建筑物、小区、校园名称,最后是内部地址(大厦的2018室、小区的5号楼1单元902室、学校里的院系、宿舍楼等)。
城区的送货范围定义方式,我想应该有两种:
一种也按行政区划的体系做树形的数据结构,比如:
(1)XX区:a.不配送,b.可配送
(2)XX街道:a.不配送,b.可配送
(3)XX社区:a.不配送,b.可配送
(根据几个大城市的行政区划情况看,细致到社区层面已经满足需求了。)
树形结构对于城市来说,并不算很适合,城市是快递公司的主营业区域,这样做定义显然比较麻烦。当然这也不失为一个还算说的过去的选择。
另一种,则是更为直观的,结合地图,按照区域分布的定义,比如北京市:
(1)先在地图上沿北五环、东五环、南五环、西五环画出一个封闭多边形,定义该多边形内部为可送范围;
(2)然后如果个别地方无法配送,可以再将该区域画一个封闭多边形,定义该区域为不可送范围;
如果这个个别地方不是很大,也可以结合第一种方案同时使用,附加上XX社区不配送的定义。
这两种方案不管是哪一种定义方式都存在一个共同的问题:
街道是线性的分布,而无论是第一方案中的社区,还是第二方案中的多边形,都是区域的分布。这样就需要将形如“中关村南大街9号”这样的地址,转为“北京理工社区”或者地理坐标。
这样后续问题也不少,比如中关村南大街这条长线分属多个社区,坐标确定对于这条线来说还得区分门牌号。
(其实城市里的门牌号也是个无比头疼的问题,比如门牌号的“知名度”“稳定性”都很差)
但不管怎样,问题还不算彻底没救,还是有了一个不算太坏的解决方案。
[ 此贴被percyboy在2008-01-18 21:02重新编辑 ]