• R/O
  • SSH
  • HTTPS

osmtools: Commit


Commit MetaInfo

Revision10 (tree)
Time2010-04-26 04:38:12
Authorargrath

Log Message

リレーションを使うように変更

Change Summary

Incremental Difference

--- ksj2/extract_lake.pl (revision 9)
+++ ksj2/extract_lake.pl (revision 10)
@@ -8,27 +8,17 @@
88
99 use Geo::KSJ;
1010
11-#binmode(STDOUT, ':encoding(shift_jis)');
11+my $ksj = Geo::KSJ->new_file('W09-05.xml', {
12+ generator => 'extract_lake.pl',
13+});
1214
1315 my $x = XML::TreePP->new();
14-
15-#my $h = $x->parsefile($ARGV[0]);
16-$x->set( force_array => [ 'jps:GM_Surface.patch' ] );
16+$x->set( force_array => [ 'jps:GM_Surface.patch', 'jps:GM_SurfaceBoundary.exterior', 'jps:GM_SurfaceBoundary.interior' ] );
1717 $x->set( utf8_flag => 1 );
18-my $h = $x->parsefile('W09-05.xml'); # 湖沼
18+my $h = $x->parse($ksj->xml);
1919
20-#print Dumper($h);
21-#exit;
22-
23-
24-my $ksj = Geo::KSJ->new($h, {
25- generator => 'extract_lake.pl',
26-});
27-
2820 my $base = $h->{"ksj:GI"}->{dataset}->{'ksj:object'}->{'ksj:AA01'}->{'ksj:OBJ'};
2921
30-#print Dumper($base);
31-
3222 my %point = %{$ksj->point};
3323 my %curve = %{$ksj->curve};
3424 my %pointid = %{$ksj->pointid};
@@ -51,42 +41,40 @@
5141 }
5242 }
5343
54-
55-my %surface_curve;
44+my %surface;
5645 {
5746 my $s = $base->{'jps:GM_Surface'};
5847
59-#print Dumper($s);
60-
6148 for (@$s){
49+ my %s;
50+ my @inner = ();
51+ my @outer = ();
6252 my $id = $_->{'-id'};
63- my $v1 = $_->{'jps:GM_Surface.patch'};
64-
65- for(@$v1){
66- my $vals = $_->{'jps:GM_Polygon'}->{'jps:GM_Polygon.boundary'}->
67- {'jps:GM_SurfaceBoundary'}->{'jps:GM_SurfaceBoundary.exterior'}->
68- {'jps:GM_Ring'}->{'jps:GM_CompositeCurve.generator'}->{'-idref'};
69-
70-# print $id . "\t" . $orientable_curve{$vals} . "\n";
71-
72- $surface_curve{$orientable_curve{$vals}} = $id;
53+ for (@{$_->{'jps:GM_Surface.patch'}}){
54+ my $v1 = $_->{'jps:GM_Polygon'}->{'jps:GM_Polygon.boundary'}->
55+ {'jps:GM_SurfaceBoundary'};
56+ for (@{$v1->{'jps:GM_SurfaceBoundary.exterior'}}){
57+ push @outer, $orientable_curve{$_->{'jps:GM_Ring'}->{'jps:GM_CompositeCurve.generator'}->{'-idref'}};
58+ }
59+ for (@{$v1->{'jps:GM_SurfaceBoundary.interior'}}){
60+ push @inner, $orientable_curve{$_->{'jps:GM_Ring'}->{'jps:GM_CompositeCurve.generator'}->{'-idref'}};
61+ }
7362 }
63+ $s{outer} = \@outer;
64+ $s{inner} = \@inner;
65+ $surface{$id} = \%s;
7466 }
7567 }
7668
77-my %lake_name;
69+#my %lake_name;
7870 {
7971 my $s = $base->{'ksj:GC01'};
8072
81-#print Dumper($s);
82-
8373 for (@$s){
8474 my $id = $_->{'ksj:ARE'}->{'-idref'};
8575 my $val = $_->{'ksj:LPN'};
86-
87-# print $id . "\t" . decode('shift_jis', $val) . "\n";
8876
89- $lake_name{$id} = $val;
77+ $surface{$id}->{name} = $val;
9078 }
9179 }
9280
@@ -96,34 +84,62 @@
9684
9785 $ksj->put_point;
9886
99-for (sort keys %curve){
100- my $id = $_;
101- my %tag = (
102- source => "MLIT, Japan",
103- 'source:ja' => "国土数値情報(湖沼データ)平成17年 国土交通省",
104- source_ref => 'http://nlftp.mlit.go.jp/ksj/jpgis/datalist/KsjTmplt-C23.html',
105- natural => 'water',
106-# natural => 'coastline',
87+my %tagbase = (
88+ source => "MLIT, Japan",
89+ 'source:ja' => "国土数値情報(湖沼データ)平成17年 国土交通省",
90+ source_ref => 'http://nlftp.mlit.go.jp/ksj/jpgis/datalist/KsjTmplt-W09.html',
10791 );
10892
109- if(defined $surface_curve{$id} && defined $lake_name{$surface_curve{$id}}){
110-# $tag{name} = encode('utf-8', $lake_name{$surface_curve{$id}});
111- $tag{name} = $lake_name{$surface_curve{$id}};
112- }
93+for (sort keys %surface){
94+ my $s = $surface{$_};
95+ if($#{$s->{inner}} == -1 && $#{$s->{outer}} == 0 && $#{$curve{${$s->{outer}}[0]}} < 1950){
96+ my $id = $s->{outer}[0];
97+ my %tag = %tagbase;
98+ $tag{natural} = 'water';
99+ $tag{'KSJ2:curve_id'} = $id;
100+ if(defined $s->{name}){
101+ $tag{name} = $s->{name};
102+ }
113103
114- my @c = @{$curve{$id}};
115- while($#c >= 1600){
116- my @nc = ();
117- for(my $i = 0; $i < 1500; $i++){
118- my $x = shift @c;
119- push @nc, $x;
104+ $ksj->put_curve_1($id, $newid--, $curve{$id}, \%tag);
105+ } else
106+ {
107+ my @imem;
108+ my @omem;
109+
110+ my $id;
111+
112+
113+ for (@{$s->{outer}}){
114+ $id = $_;
115+ my %tag = %tagbase;
116+ $tag{'KSJ2:curve_id'} = $id;
117+
118+ my ($newnewid, $ids) = $ksj->put_curves($id, $newid, \%tag);
119+ $newid = $newnewid;
120+ push @omem, @$ids;
120121 }
121- push @nc, $c[0];
122- $ksj->put_curve_1($id, $newid--, \@nc, \%tag);
122+
123+ for (@{$s->{inner}}){
124+ $id = $_;
125+ my %tag = %tagbase;
126+ $tag{'KSJ2:curve_id'} = $id;
127+
128+ my ($newnewid, $ids) = $ksj->put_curves($id, $newid, \%tag);
129+ $newid = $newnewid;
130+ push @imem, @$ids;
131+ }
132+
133+ {
134+ my %tag = %tagbase;
135+ $tag{natural} = 'water';
136+ if(defined $s->{name}){
137+ $tag{name} = $s->{name};
138+ }
139+
140+ $ksj->put_relation($newid--, \@omem, \@imem, \%tag);
141+ }
123142 }
124-
125- $ksj->put_curve_1($id, $newid--, \@c, \%tag);
126-# $ksj->put_curve_1($id, $newid--, $curve{$id}, \%tag);
127143 }
128144
129145 $ksj->close;
Show on old repository browser