114 | | which segments are upstream from the current segment ? |
115 | | |
116 | | {{{ |
117 | | -- Vilaine |
118 | | --- creating a second index to accelerate the requests |
119 | | CREATE INDEX indexriversegments_wso_id |
120 | | ON ccm21.riversegments |
121 | | USING btree |
122 | | (wso_id); |
123 | | |
124 | | select * from ccm21.riversegments where wso_id=291146; |
125 | | CREATE INDEX indexcatchments_wso_id |
126 | | ON ccm21.catchments |
127 | | USING btree |
128 | | (wso_id); |
129 | | select * from ccm21.catchments where wso_id=291146 and wso3_id=291828 ; |
130 | | -- extraction du chiffre immediatement à gauche du segment selectionné |
131 | | select * from ccm21.riversegments where wso_id=291146 order by cum_len desc; |
132 | | select round(pfafstette) from ccm21.riversegments where wso_id=291146 order by cum_len desc; |
133 | | select CAST(round(pfafstette) AS TEXT) from ccm21.riversegments where wso_id=291146 order by cum_len desc; |
134 | | select substring(CAST(round(pfafstette) AS TEXT),2,2) from ccm21.riversegments where wso_id=291146 order by cum_len desc; |
135 | | |
136 | | }}} |
137 | | |
138 | | |
139 | | {{{ |
140 | | Create an index on all wso1_id |
141 | | CREATE INDEX indexriversegments_wso1_id |
142 | | ON ccm21.riversegments |
143 | | USING btree |
144 | | (wso1_id); |
145 | | }}} |
146 | | |
147 | | {{{ |
148 | | Create an index on all wso1..._id |
149 | | CREATE INDEX indexcatchments_wso1_id |
150 | | ON ccm21.catchments |
151 | | USING btree |
152 | | (wso1_id); |
153 | | }}} |
154 | | |
155 | | {{{ |
156 | | -- segment mer vilaine |
157 | | select * from ccm21.riversegments where gid=234706; |
158 | | -- le rang de strahler est 6 |
159 | | -- recupération de l'identifiant du bv correspondant |
160 | | select wso6_id from ccm21.riversegments r join ccm21.catchments c on r.wso1_id=c.wso1_id where r.gid=234706; |
161 | | -- 291146 |
162 | | select wso1_id from ccm21.catchments c where wso6_id = 291146; |
163 | | -- le m^ en plus compliqué |
164 | | select wso1_id from ccm21.catchments c where wso6_id = |
165 | | select wso1_id from ccm21.catchments c where wso6_id = |
166 | | (select wso6_id from ccm21.riversegments r |
167 | | join ccm21.catchments c on r.wso1_id=c.wso1_id |
168 | | where r.gid=234706); |
169 | | -- liste de wso1_id |
170 | | -- extraction des segments contenus dans ces bassins |
171 | | select * from ccm21.riversegments where wso1_id in |
172 | | (select wso1_id from ccm21.catchments c where wso6_id = 291146) order by cum_len desc; |
173 | | -- le m^ en plus compliqué |
174 | | select * from ccm21.riversegments where wso1_id in |
175 | | (select wso1_id from ccm21.catchments c where wso6_id = |
176 | | (select wso6_id from ccm21.riversegments r |
177 | | join ccm21.catchments c on r.wso1_id=c.wso1_id |
178 | | where r.gid=234706) |
179 | | ) ; |
180 | | -- avec un cas adapté à chaque rang de strahler (marche pas) |
181 | | |
182 | | select CASE WHEN r.strahler=5 THEN (select wso1_id from ccm21.catchments c where wso5_id = |
183 | | (select wso5_id from ccm21.riversegments r |
184 | | join ccm21.catchments c on r.wso1_id=c.wso1_id |
185 | | where r.gid=234706)) |
186 | | WHEN r.strahler=6 THEN (select wso1_id from ccm21.catchments c where wso6_id = |
187 | | (select wso6_id from ccm21.riversegments r |
188 | | join ccm21.catchments c on r.wso1_id=c.wso1_id |
189 | | where r.gid=234706)) |
190 | | ELSE 0 |
191 | | END AS wso1_id |
192 | | FROM ccm21.riversegments r |
193 | | join ccm21.catchments c on r.wso1_id=c.wso1_id |
194 | | where r.gid=234706; |
195 | | |
196 | | -- marche pas |
197 | | |
198 | | |
199 | | |
200 | | -- longueur de la cle pfstette |
201 | | select character_length(CAST(round(pfafstette) AS TEXT)) from ccm21.riversegments where gid=234706; --1 |
202 | | -- selection de tous les noeuds de la Vilaine en amont du noeud choisi |
203 | | select gid from ccm21.riversegments |
204 | | where wso_id=291146 |
205 | | and CAST(substring(CAST(round(pfafstette) AS TEXT), |
206 | | 1, |
207 | | 1 -- voir ci dessus pour le calcul |
208 | | ) as numeric ) |
209 | | |
210 | | >1 ; |
211 | | -- le même en plus compliqué |
212 | | select gid from ccm21.riversegments |
213 | | where wso_id=291146 |
214 | | and CAST(substring(CAST(round(pfafstette) AS TEXT), |
215 | | 1, |
216 | | 1 -- voir ci dessus pour le calcul |
217 | | ) as numeric ) |
218 | | |
219 | | > (select pfafstette FROM ccm21.riversegments where gid=234706); |
220 | | |
221 | | -- le même en plus compliqué |
222 | | select gid from ccm21.riversegments |
223 | | where wso_id=291146 |
224 | | and CAST(substring(CAST(round(pfafstette) AS TEXT), |
225 | | 1, |
226 | | (select character_length(CAST(round(pfafstette) AS TEXT)) from ccm21.riversegments where gid=234706) |
227 | | ) as numeric ) |
228 | | |
229 | | > (select pfafstette FROM ccm21.riversegments where gid=234706); |
230 | | select max (strahler) from ccm21.riversegments -- 10 |
231 | | -- le même en plus compliqué |
232 | | select gid from ccm21.riversegments |
233 | | where wso1_id in |
234 | | (select wso1_id from ccm21.catchments c where wso6_id = |
235 | | (select wso6_id from ccm21.riversegments r |
236 | | join ccm21.catchments c on r.wso1_id=c.wso1_id |
237 | | where r.gid=234706) |
238 | | ) |
239 | | and CAST(substring(CAST(round(pfafstette) AS TEXT), |
240 | | 1, |
241 | | (select character_length(CAST(round(pfafstette) AS TEXT)) from ccm21.riversegments where gid=234706) |
242 | | ) as numeric ) |
243 | | |
244 | | > (select pfafstette FROM ccm21.riversegments where gid=234706); |
245 | | |
246 | | -- le même en plus compliqué |
247 | | }}} |