Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fdcf253ca7 |
@@ -109,6 +109,13 @@ final class ImportPostcodes extends Command
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ONS marks non-geographic postcodes (no grid reference) with a
|
||||||
|
// placeholder latitude of 99.999999 — drop them so they don't
|
||||||
|
// poison nearest-station distance maths with a bogus location.
|
||||||
|
if (abs((float) $lat) >= 90) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
$pcd = strtoupper(preg_replace('/\s+/', '', (string) $row[$columns[$pcdColumn]]));
|
$pcd = strtoupper(preg_replace('/\s+/', '', (string) $row[$columns[$pcdColumn]]));
|
||||||
|
|
||||||
if ($pcd === '' || strlen($pcd) < 5) {
|
if ($pcd === '' || strlen($pcd) < 5) {
|
||||||
|
|||||||
@@ -63,6 +63,21 @@ CSV;
|
|||||||
->and(Postcode::find('BT11AA'))->toBeNull();
|
->and(Postcode::find('BT11AA'))->toBeNull();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('skips postcodes with placeholder coordinates (no grid reference)', function (): void {
|
||||||
|
$csv = <<<'CSV'
|
||||||
|
pcd,pcds,doterm,lat,long
|
||||||
|
"SW1A1AA","SW1A 1AA","",51.501009,-0.141588
|
||||||
|
"GIR0AA","GIR 0AA","",99.999999,0.000000
|
||||||
|
CSV;
|
||||||
|
|
||||||
|
$path = writeOnspdFixture($csv);
|
||||||
|
|
||||||
|
$this->artisan('postcodes:import', ['--file' => $path])->assertSuccessful();
|
||||||
|
|
||||||
|
expect(Postcode::count())->toBe(1)
|
||||||
|
->and(Postcode::find('GIR0AA'))->toBeNull();
|
||||||
|
});
|
||||||
|
|
||||||
it('accepts ArcGIS ONSPD exports that use PCD7 instead of PCD', function (): void {
|
it('accepts ArcGIS ONSPD exports that use PCD7 instead of PCD', function (): void {
|
||||||
$csv = <<<'CSV'
|
$csv = <<<'CSV'
|
||||||
OBJECTID,PCD7,PCD8,PCDS,DOTERM,LAT,LONG,x,y
|
OBJECTID,PCD7,PCD8,PCDS,DOTERM,LAT,LONG,x,y
|
||||||
|
|||||||
Reference in New Issue
Block a user