【问题标题】:How can I use Geo::Coder::US and Geo::TigerLine to convert U.S. street addresses to geospatial coordinates?如何使用 Geo::Coder::US 和 Geo::TigerLine 将美国街道地址转换为地理空间坐标?
【发布时间】:2012-06-20 16:09:12
【问题描述】:

我在 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 拥有它想要的一切吗?

【问题讨论】:

    标签: perl geolocation geocoding geospatial cpan


    【解决方案1】:

    我在Geo::Coder::US::Import 的 CPAN 文档中找到了this。您也许可以将文档中给出的示例与这些文件的新版本一起使用。看来您无论如何都应该自己获取文件。它们似乎没有随模块一起提供。

    因此,找不到数据库文件是有道理的。

    我偷偷看了一下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 网站上查找当前数据,将其放在工作目录附近的某个位置,然后使用数据的文件名再次尝试。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-05
        • 2011-05-14
        • 1970-01-01
        相关资源
        最近更新 更多