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