summaryrefslogtreecommitdiff
path: root/TIGERweb/Layer.pm
diff options
context:
space:
mode:
authorMark Wells <mark@freeside.biz>2016-11-17 00:57:40 -0800
committerMark Wells <mark@freeside.biz>2016-11-17 00:57:40 -0800
commite33b3f4ae5f63db6f734ef38049092911ea9961b (patch)
tree5e252c804741effec716759d1285af277df18f1b /TIGERweb/Layer.pm
initial version
Diffstat (limited to 'TIGERweb/Layer.pm')
-rw-r--r--TIGERweb/Layer.pm38
1 files changed, 38 insertions, 0 deletions
diff --git a/TIGERweb/Layer.pm b/TIGERweb/Layer.pm
new file mode 100644
index 0000000..c416ef1
--- /dev/null
+++ b/TIGERweb/Layer.pm
@@ -0,0 +1,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;