source: subversion/applications/utils/opengeodb2osm/places2sql.pl @ 34621

Last change on this file since 34621 was 6465, checked in by tabacha, 12 years ago

Version of a initial import

File size: 1.7 KB
Line 
1#!/usr/bin/perl -w
2
3my $filename=$ARGV[0] or die;
4
5print "
6SET NAMES 'utf8';
7
8DROP TABLE IF EXISTS \`nodes\`;
9CREATE TABLE \`nodes\` (
10  \`id\` int(11) NOT NULL,
11  \`name\` varchar(255) NOT NULL,
12  \`lat\` double default NULL,
13  \`lon\` double default NULL
14) ENGINE=InnoDB DEFAULT CHARSET=utf8;
15
16
17DROP TABLE IF EXISTS \`tages\`;
18CREATE TABLE \`tages\` (
19  \`id\` int(11) NOT NULL,
20  \`k\` varchar(255) NOT NULL,
21  \`v\` varchar(255) NOT NULL
22) ENGINE=InnoDB DEFAULT CHARSET=utf8;
23
24
25";
26open(FILE,"zcat $filename|") or die;
27foreach my $line (<FILE>) {
28
29    if (($line=~/node id=\"(.*)\" lat=\"(.*)\" lon=\"(.*)\" timestamp=\"(.*?)\"/) or 
30        ($line=~/node id='(.*)' lat='(.*)' lon='(.*?)' .* timestamp='(.*?)'/) or
31        ($line=~/node id='(.*)' lat='(.*)' lon='(.*)' timestamp='(.*?)'/)) 
32    {
33       
34        $id=$1;
35        $lat=$2;
36        $lon=$3;
37#        $timestamp=$4;
38
39     %tag=();
40 } elsif (($line=~/tag k=\"(.*)\" v=\"(.*)\" \/\>/) or 
41          ($line=~/tag k='(.*)' v='(.*)'\/\>/)) { 
42     $key=$1;
43     $value=$2;
44
45     $tag{$key}=$value;
46 } elsif ($line=~/\<\/node\>/) {
47     $print=1;
48     if (($lat<44) or ($lat>56)) {
49         $print=0;
50     } elsif (($lon<1) or ($lon>18)) {
51         $print=0;
52     }
53     if (!(defined($tag{"place"}))) {
54         $print=0;
55     }
56     if ($print) {
57         if (defined($tag{"name"})) {
58             $name=$tag{"name"};
59         } else {
60             $name="";
61         }
62         print "\ninsert into nodes set id=\"$id\",lat=\"$lat\",lon=\"$lon\",name=\"$name\";\n";
63
64         foreach $key (keys %tag) {
65             $value=$tag{$key};
66             print "insert into tages set id=\"$id\",k=\"$key\", v=\"$value\";\n";
67         }
68     }
69 }
70
71}
72close(FILE);
73
74print "
75create index nodes_lon_idx on nodes(lon);
76create index nodes_lat_idx on nodes(lat);
77create index nodes_name_idx on nodes(name);
78create index tages_id_idx on tages(id);
79
80";
Note: See TracBrowser for help on using the repository browser.