blob: c416ef1ea223f71ea8f5f34d1fa545b1cd831fa9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
package Geo::USCensus::TIGERweb::Layer;
use strict;
use warnings;
use base 'Geo::USCensus::TIGERweb';
my %geometryTypeGuess = (
'x' => 'esriGeometryPoint',
'points' => 'esriGeometryMultiPoint',
'paths' => 'esriGeometryPolyLine',
'rings' => 'esriGeometryPolygon',
);
sub query {
my ($self, %param) = @_;
my $g = $param{geometry} or die 'query: geometry required';
if (!$param{geometryType}) {
foreach (keys %geometryTypeGuess) {
if (exists $g->{$_}) {
$param{geometryType} = $geometryTypeGuess{$_};
last;
}
}
}
my $fields = delete $param{fields};
die 'query: fields required' if !$fields;
$param{outFields} = $fields;
# set a spatial reference in a sensible way
my $wkid = $param{inSR} ||= '4326';
$param{outSR} ||= $wkid;
$g->{wkid} ||= $wkid;
# default to find features that intersect
$param{'spatialRel'} ||= 'esriSpatialRelIntersects';
return $self->request('query', \%param);
}
1;
|