[OSM-talk-fr] Limites communales simplifiées... disponibles !

Christian Quest cquest at openstreetmap.fr
Lun 23 Déc 11:13:35 UTC 2013


Nouveau fichier dispo (à tester): les limites sous forme non pas de
polygone, mais de linestring.

C'est utile quand on veut représenter les frontières proprement pour chaque
niveau administratif.

C'est ici (simplifié à 100m):
http://osm13.openstreetmap.fr/~cquest/openfla/export/limites-20131223-100m-shp.zip
:

Pour chaque limite on a:
- le code INSEE des communes à gauche et à droite (issu d'OSM)
- le niveau administratif (2,4,6,7,8) issu du croisement avec le COG

Je vais compléter sûrement avec les noms des niveaux administratifs, peut
être aussi en croisant avec d'autres découpages comme les EPCI, bref l'idée
est de savoir qu'une limite est une limite de N découpages et lesquels.

De quoi faire une belle dataviz de notre fameux mille-feuilles !

Pour info, retrouver qui est à gauche ou à droite se fait avec postgis et
ST_Intersects + ST_LineInterpolatePoint et ST_OffsetCurve.
Traiter les 110 000 limites et générer le shapefile ne prends que 38s,
voici la tête de la requête:

select
  admin_level,
  case
    when cote then insee1
    else insee2
  end as insee_gauche,
  case
    when cote then insee2
    else insee2
  end as insee_droit,
  way
from
  (select
    ST_Intersects(p1.poly250,
st_line_interpolate_point(st_offsetcurve((st_dump(l.lim250)).geom, 0.1,
'quad_segs=1 join=mitre'), 0.5)) as cote,
    (st_dump(l.lim250)).geom as way,
    i1.insee as insee1,
    i2.insee as insee2,
    case
      when array_length(l.insee,1)=1 then 2
      when i1.reg!=i2.reg then 4
      when i1.dep!=i2.dep then 6
      when i1.ar != i2.ar then 7
      else 8
    end as admin_level
  from
    osm_limites l
  join
    insee_cog i1
      on (l.insee[1] = i1.insee)
  left join
    insee_cog i2
      on (l.insee[2]=i2.insee)
  join
    osm_fla p1
      on (p1.insee=i1.insee)
   ) as lim


Il me manque juste la détection frontière terrestre ou maritime...

-- 
Christian Quest - OpenStreetMap France
Un nouveau serveur pour OSM... http://donate.osm.org/server2013/
-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <http://lists.openstreetmap.org/pipermail/talk-fr/attachments/20131223/5d4e5765/attachment.htm>


Plus d'informations sur la liste de diffusion Talk-fr