sg

Pazar, Ocak 08, 2006

Re: find the state from lat and lon coordinates


#!/usr/bin/perl -w

use Geo::E00;

use Data::Dumper;

my $e = new Geo::E00;
$file = "st99_d00.e00";

my $fh = $e->open($ARGV[0]);

if (defined $fh)
{
my $edata = $e->parse;

# print STDERR Data::Dumper->Dump( [ $edata ] );

my $arcsets = $edata->{'arc'};

my $table = "test";
my $db = "gistest";

my $ct = "CREATE TABLE $table (num int4, id int4, fnode int4, tnode
int4, lpoly int4, rpoly int4, npoints int4);";
my $gc = "SELECT
AddGeometryColumn('$db','$table','the_geom','-1','LINESTRING',2);";

print "$ct\n$gc\nBEGIN;\n";

foreach my $set (@$arcsets)
{
# Collect the values for the INSERT statement

my $values = join(",", @$set{
'cov-num',
'cov-id',
'node-from',
'node-to',
'poly-left',
'poly-right',
'npoints'}
);

my @points = ();

for (my $i = 0; $i < $set->{'npoints'}; $i++)
{
# +0 is used to force perl to convert
# the string to a number.

my $x = $set->{'points'}[(2*$i)+0] + 0;
my $y = $set->{'points'}[(2*$i)+1] + 0;

push @points, "$x $y";
}

my $ls = "GeometryFromText('LINESTRING(" . join(",", @points) .
")',-1)";

my $q = "INSERT INTO $table VALUES($values,$ls);";

print "$q\n";

# print STDERR Data::Dumper->Dump( [ $set ] );
}

print "COMMIT;\n";
}

__END__;

CREATE TABLE sample__arc (_arcnum INTEGER, _arcid INTEGER, _fnode
INTEGER,
_tnode INTEGER, _lpoly INTEGER, _rpoly INTEGER, _ncoord INTEGER);
SELECT
AddGeometryColumn('__E_dbname__','sample__arc','_geom','__E_srid__','LINESTRING',2);
'LINESTRING(340199.78 4100000,340299.94 4100199.8)',__E_srid__));

select
AddGeometryColumn('gistest','parchi','the_geom','-1','MULTIPOLYGON',2);

0 Comments:

Yorum Gönder

<< Home


Komik Videolar   islam  şarkı sözleri  yemek tarifleri  gelibolu  huzur   sağlık