如何使用Geo :: Coder :: US和Geo :: TigerLine将美国街道地址转换为地理空间坐标?

时间:2012-06-18 16:28:44

标签: perl geolocation geocoding geospatial cpan

我在Geo::Coder::USGeo::Coder::US::Import工作。他们说我需要导入数据库,他们的例子没有说明如何去做,至少对于现在有效的方式。 Geo :: Coder :: US希望看到Berkeley DB。 Geo :: Coder :: US :: Import有示例代码来创建不起作用的数据库。代码:

Geo::Coder::US::Import->load_tiger_data( "TGR06075" );

崩溃,说:

  

无法读取TGR06075.RTC:./import.pl第7行没有此类文件或目录

字符串是否过时了?有人可以提供填充数据库的示例代码,以便Geo :: Coder :: US拥有它想要的一切吗?

2 个答案:

答案 0 :(得分:3)

我在this的CPAN文档中找到Geo::Coder::US::Import。您可以将文档中给出的示例与这些文件的新版本一起使用。看起来你应该自己获取文件。它们似乎没有附带模块。

因此,它无法找到数据库文件。

我偷偷看了看Import.pm

sub load_tiger_data {
    my ($class, $source) = @_;

    my $DB = \%Geo::Coder::US::DB;
    croak "No database specified" unless tied( %$DB );

    open TIGER, "<$source.RTC" or croak "can't read $source.RTC: $!";
    Geo::TigerLine::Record::C->parse_file( \*TIGER, \&_type_C );

    open TIGER, "<$source.RT1" or croak "can't read $source.RT1: $!";
    Geo::TigerLine::Record::1->parse_file( \*TIGER, \&_type_1 );

看起来它会将.RTC附加到参数,使其成为文件名。因此,我建议尝试在Census网站上找到当前数据,将其放在工作目录附近,然后再次使用数据的文件名。

答案 1 :(得分:2)

您要查找的文件可能位于此处:     ftp://ftp2.census.gov/geo/tiger/TIGER2011/