source: osm/applications/editors/josm/plugins/pointInfo/servers/RUIAN/index.php@ 30373

Last change on this file since 30373 was 30373, checked in by mkyral, 12 years ago

PointInfo: Add more external links, nicer icons.

File size: 10.6 KB
Line 
1<?php
2require("config.php");
3$lat=$_REQUEST['lat'];
4$lon=$_REQUEST['lon'];
5if ( !is_numeric($lat) or !is_numeric($lon) ) die;
6header('Content-Type: application/json');
7
8$data = array();
9
10$data["coordinates"] = array( "lat" => "$lat", "lon" => "$lon");
11$data["source"] = "cuzk:ruian";
12
13
14// building
15$query="
16 select s.kod,
17 s.pocet_podlazi, a.nazev zpusob_vyuziti, s.plati_od, s.pocet_bytu, s.dokonceni,
18 s.zpusob_vyuziti_kod, a.osmtag_k, a.osmtag_v
19 from rn_stavebni_objekt s
20 left outer join osmtables.zpusob_vyuziti_objektu a on s.zpusob_vyuziti_kod = a.kod
21 where st_contains(s.hranice,st_transform(st_geomfromtext('POINT(".$lon." ".$lat.")',4326),900913))
22 and not s.deleted
23 limit 1;
24";
25$result=pg_query($CONNECT,$query);
26
27if (pg_num_rows($result) > 0)
28{
29 $row = pg_fetch_array($result, 0);
30
31
32 $data["stavebni_objekt"] =
33 array( "ruian_id" => $row["kod"],
34 "pocet_podlazi" => $row["pocet_podlazi"],
35 "zpusob_vyuziti" => $row["zpusob_vyuziti"],
36 "zpusob_vyuziti_kod" => $row["zpusob_vyuziti_kod"],
37 "zpusob_vyuziti_key" => $row["osmtag_k"],
38 "zpusob_vyuziti_val" => $row["osmtag_v"],
39 "pocet_bytu" => $row["pocet_bytu"],
40 "dokonceni" => $row["dokonceni"],
41 "plati_od" => $row["plati_od"]
42 );
43} else
44 $data["stavebni_objekt"] = array();
45
46// Addresses
47if ($data["stavebni_objekt"]["ruian_id"] > 0)
48{
49 $query="
50 select am.kod as adresni_misto_kod,
51 am.stavobj_kod,
52 st_asgeojson(st_transform(am.definicni_bod, 4326)) as pozice,
53 CASE
54 WHEN s.typ_kod = 1 THEN 'Číslo popisné'
55 WHEN s.typ_kod = 2 THEN 'Číslo evidenční'
56 WHEN s.typ_kod = 3 THEN 'bez č.p./č.e.'
57 ELSE ''
58 END cislo_typ,
59 am.cislo_domovni,
60 am.cislo_orientacni_hodnota || coalesce(am.cislo_orientacni_pismeno, '') cislo_orientacni,
61 am.adrp_psc psc,
62 ul.kod ulice_kod, ul.nazev ulice,
63 c.kod cast_obce_kod, c.nazev cast_obce,
64 momc.kod mestska_cast_kod, momc.nazev mestska_cast,
65 ob.kod obec_kod, ob.nazev obec,
66 ok.kod okres_kod, ok.nazev okres,
67 vu.kod kraj_kod, vu.nazev kraj
68 from ruian.rn_adresni_misto am
69 left outer join rn_stavebni_objekt s on am.stavobj_kod = s.kod and not s.deleted
70 left outer join osmtables.zpusob_vyuziti_objektu a on s.zpusob_vyuziti_kod = a.kod
71 left outer join rn_ulice ul on am.ulice_kod = ul.kod and not ul.deleted
72 left outer join rn_cast_obce c on c.kod = s.cobce_kod and not c.deleted
73 left outer join rn_momc momc on momc.kod = s.momc_kod and not momc.deleted
74 left outer join rn_obec ob on coalesce(ul.obec_kod, c.obec_kod) = ob.kod and not ob.deleted
75 left outer join rn_okres ok on ob.okres_kod = ok.kod and not ok.deleted
76 left outer join rn_vusc vu on ok.vusc_kod = vu.kod and not vu.deleted
77 where am.stavobj_kod = ".$data["stavebni_objekt"]["ruian_id"]."
78 and not am.deleted
79 order by st_distance( (st_transform(am.definicni_bod,4326))::geography,
80 (st_setsrid(st_makepoint(".$lon.",".$lat."),4326))::geography)
81 ;
82 ";
83
84 $result=pg_query($CONNECT,$query);
85 $error= pg_last_error($CONNECT);
86 if (pg_num_rows($result) > 0)
87 {
88 $am = array();
89 for ($i = 0; $i < pg_num_rows($result); $i++)
90 {
91 $row = pg_fetch_array($result, $i);
92 $geometry=json_decode($row["pozice"], true);
93 array_push($am,
94 array("ruian_id" => $row["adresni_misto_kod"],
95 "pozice" => $geometry['coordinates'],
96 "budova_kod" => $row["stavobj_kod"],
97 "cislo_typ" => $row["cislo_typ"],
98 "cislo_domovni" => $row["cislo_domovni"],
99 "cislo_orientacni" => $row["cislo_orientacni"],
100 "ulice_kod" => $row["ulice_kod"],
101 "ulice" => $row["ulice"],
102 "cast_obce_kod" => $row["cast_obce_kod"],
103 "cast_obce" => $row["cast_obce"],
104 "mestska_cast_kod" => $row["mestska_cast_kod"],
105 "mestska_cast" => $row["mestska_cast"],
106 "obec_kod" => $row["obec_kod"],
107 "obec" => $row["obec"],
108 "okres_kod" => $row["okres_kod"],
109 "okres" => $row["okres"],
110 "kraj_kod" => $row["kraj_kod"],
111 "kraj" => $row["kraj"],
112 "psc" => $row["psc"]
113 ));
114 }
115 $data["adresni_mista"] = $am;
116 } else
117 {
118 // echo "error: $error\n";
119 $data["adresni_mista"] = array();
120 }
121}
122else
123{
124 $query="
125 select am.kod as adresni_misto_kod,
126 am.stavobj_kod,
127 st_asgeojson(st_transform(am.definicni_bod, 4326)) as pozice,
128 CASE
129 WHEN s.typ_kod = 1 THEN 'Číslo popisné'
130 WHEN s.typ_kod = 2 THEN 'Číslo evidenční'
131 WHEN s.typ_kod = 3 THEN 'bez č.p./č.e.'
132 ELSE ''
133 END cislo_typ,
134 am.cislo_domovni,
135 am.cislo_orientacni_hodnota || coalesce(am.cislo_orientacni_pismeno, '') cislo_orientacni,
136 am.adrp_psc psc, ul.nazev ulice, c.nazev cast_obce,
137 momc.nazev mestska_cast,
138 ob.nazev obec, ok.nazev okres, vu.nazev kraj
139 from ( select kod, stavobj_kod,
140 cislo_domovni, cislo_orientacni_hodnota, cislo_orientacni_pismeno,
141 ulice_kod, adrp_psc,
142 definicni_bod
143 from ruian.rn_adresni_misto
144 where not deleted
145 order by definicni_bod <->
146 st_transform(st_setsrid(st_makepoint(".$lon.", ".$lat."),4326),900913)
147 limit 100) as am
148 left outer join rn_stavebni_objekt s on am.stavobj_kod = s.kod and not s.deleted
149 left outer join osmtables.zpusob_vyuziti_objektu a on s.zpusob_vyuziti_kod = a.kod
150 left outer join rn_ulice ul on am.ulice_kod = ul.kod and not ul.deleted
151 left outer join rn_cast_obce c on c.kod = s.cobce_kod and not c.deleted
152 left outer join rn_momc momc on momc.kod = s.momc_kod and not momc.deleted
153 left outer join rn_obec ob on coalesce(ul.obec_kod, c.obec_kod) = ob.kod and not ob.deleted
154 left outer join rn_okres ok on ob.okres_kod = ok.kod and not ok.deleted
155 left outer join rn_vusc vu on ok.vusc_kod = vu.kod and not vu.deleted
156 where st_distance( (st_transform(am.definicni_bod,4326))::geography, (st_setsrid(st_makepoint(".$lon.", ".$lat."),4326))::geography ) < 100
157 order by st_distance( (st_transform(am.definicni_bod,4326))::geography,
158 (st_setsrid(st_makepoint(".$lon.", ".$lat."),4326))::geography)
159 limit 5
160 ;
161 ";
162
163 $result=pg_query($CONNECT,$query);
164 $error= pg_last_error($CONNECT);
165 if (pg_num_rows($result) > 0)
166 {
167 $am = array();
168 for ($i = 0; $i < pg_num_rows($result); $i++)
169 {
170 $row = pg_fetch_array($result, $i);
171 $geometry=json_decode($row["pozice"], true);
172 array_push($am,
173 array("ruian_id" => $row["adresni_misto_kod"],
174 "pozice" => $geometry['coordinates'],
175 "budova_kod" => $row["stavobj_kod"],
176 "cislo_typ" => $row["cislo_typ"],
177 "cislo_domovni" => $row["cislo_domovni"],
178 "cislo_orientacni" => $row["cislo_orientacni"],
179 "ulice" => $row["ulice"],
180 "cast_obce" => $row["cast_obce"],
181 "mestska_cast" => $row["mestska_cast"],
182 "obec" => $row["obec"],
183 "okres" => $row["okres"],
184 "kraj" => $row["kraj"],
185 "psc" => $row["psc"]
186 ));
187 }
188 $data["adresni_mista"] = $am;
189 } else
190 {
191 // echo "error: $error\n";
192 $data["adresni_mista"] = array();
193 }
194
195}
196
197// land
198$query="
199 select s.id, a.nazev as druh_pozemku, b.nazev as zpusob_vyuziti, s.plati_od
200 from rn_parcela s
201 left outer join osmtables.druh_pozemku a on s.druh_pozemku_kod = a.kod
202 left outer join osmtables.zpusob_vyuziti_pozemku b on s.zpusob_vyu_poz_kod = b.kod
203 where st_contains(s.hranice,st_transform(st_geomfromtext('POINT(".$lon." ".$lat.")',4326),900913))
204 and not s.deleted
205 limit 1;
206";
207
208$result=pg_query($CONNECT,$query);
209$error= pg_last_error($CONNECT);
210if (pg_num_rows($result) > 0)
211{
212 $row = pg_fetch_array($result, 0);
213
214 $data["parcela"] =
215 array( "ruian_id" => $row["id"],
216 "druh_pozemku" => $row["druh_pozemku"],
217 "zpusob_vyuziti" => $row["zpusob_vyuziti"],
218 "plati_od" => $row["plati_od"]
219 );
220} else
221{
222// echo "error: $error\n";
223 $data["parcela"] = array();
224}
225
226// ulice
227$query="
228 select u.kod, u.nazev as jmeno
229 from ( select kod, nazev, definicni_cara
230 from ruian.rn_ulice
231 where not deleted
232 order by definicni_cara <->
233 st_transform(st_setsrid(st_makepoint(".$lon.",".$lat."),4326),900913)
234 limit 500) as u
235 where st_distance( (st_transform(u.definicni_cara,4326))::geography, (st_setsrid(st_makepoint(".$lon.",".$lat."),4326))::geography ) < 10
236 order by st_distance( (st_transform(u.definicni_cara,4326))::geography,
237 (st_setsrid(st_makepoint(".$lon.",".$lat."),4326))::geography)
238 limit 1
239 ;
240";
241
242$result=pg_query($CONNECT,$query);
243$error= pg_last_error($CONNECT);
244if (pg_num_rows($result) > 0)
245{
246 $row = pg_fetch_array($result, 0);
247
248 $data["ulice"] =
249 array( "ruian_id" => $row["kod"],
250 "jmeno" => $row["jmeno"]);
251} else
252{
253// echo "error: $error\n";
254 $data["ulice"] = array();
255}
256
257// cadastral area
258$query="
259 select ku.kod, ku.nazev,
260 ob.kod obec_kod, ob.nazev obec,
261 ok.kod okres_kod, ok.nazev okres,
262 vu.kod kraj_kod, vu.nazev kraj
263 from rn_katastralni_uzemi ku
264 left outer join rn_obec ob on ku.obec_kod = ob.kod and not ob.deleted
265 left outer join rn_okres ok on ob.okres_kod = ok.kod and not ok.deleted
266 left outer join rn_vusc vu on ok.vusc_kod = vu.kod and not vu.deleted
267 where st_contains(ku.hranice,st_transform(st_geomfromtext('POINT(".$lon." ".$lat.")',4326),900913))
268 and not ku.deleted
269 limit 1;
270";
271
272$result=pg_query($CONNECT,$query);
273$error= pg_last_error($CONNECT);
274if (pg_num_rows($result) > 0)
275{
276 $row = pg_fetch_array($result, 0);
277
278 $data["katastr"] =
279 array( "ruian_id" => $row["kod"],
280 "nazev" => $row["nazev"],
281 "obec_kod" => $row["obec_kod"],
282 "obec" => $row["obec"],
283 "okres_kod" => $row["okres_kod"],
284 "okres" => $row["okres"],
285 "kraj_kod" => $row["kraj_kod"],
286 "kraj" => $row["kraj"],
287 );
288} else
289{
290 $data["katastr"] = array();
291}
292
293echo json_encode($data);
294
295?>
Note: See TracBrowser for help on using the repository browser.