> > Aber ein simpler Konverter, der
> > in einer DXF-Datei Polygone sucht und in OSM konvertiert,
> > sollte kein Problem sein. Ich k?nnte mich mal daran
> > versuchen, falls echter Bedarf besteht.
> 
> Womit ich auch schon zufrieden wäre: 


Ersteres ist bestimmt einfacher als das, mit dem Du 
"schon zufrieden" wärst :)


Ich habe gerade mal was zusammengetippt. Keinen Konverter,
weil man dann wieder das Plattform-Problem hat, sondern
ein AutoLISP-Programm. Es ist eigentlich nur eine Art
Machbarkeitsstudie, an der noch eine Menge fehlt, vor
allem eine Entzerrung unter Berücksichtigung der Kugelform
der Erde. Zum Testen bitte nur Polylinien auswählen 
(LWPOLYLINE), es gibt weder Filter noch Fehlererkennung!
Das Ergebnis kannst Du direkt mit JOSM öffnen.


Untenstehenden Code in eine Datei mit der Endung .lsp speichern,
dann in AutoCAD laden und mit dem neuen Befehl "osm" starten.


Paul




(defun c:osm( / )
  (setq as (ssget)
        al (sslength as)
        zz 0
        nl (list)
        nz 0
        wl (list)
        wz 0
  )
  (while (< zz al)                      ; go through all selected objects
    (setq li (entget (ssname as zz))    ; get list
          zz (1+ zz)
          tl (list)                     ; temp. node list 
          fn (1- nz)                    ; remember first node 
    )
    (foreach el li                      ; go through the list
      (if (= (car el) 10)               ; if it's point
        (setq nz (1- nz)                ; node counter
              el (cdr el)               ; 2D coordinates
              el (list nz el)           ; list with node counter and coords
              nl (append nl (list el))  ; add node to node list
              tl (append tl (list nz))  ; add node to temp. list
        )
      )
    )
    (if (= (assoc 70 li) 1)
      (setq tl (append tl (list fn)))   ; repeat first node if polygon is closed
    )
    (setq wl (append wl (list tl)))     ; add temp. list to way list
  )
  (setq fn (getfiled "save OSM file as..." " " "osm" 1)
        fi (open fn "w")
        tv "' timestamp='2008-04-06T12:34:56+00:00' visible='true'"
  )
  (write-line "<?xml version='1.0' encoding='UTF-8'?>" fi)
  (write-line "<osm version='0.5' generator='AutoCAD-OSM'>" fi)
  (foreach el nl
    (setq z (strcat "  <node id='" (itoa (car el)) tv
                    "  lat='" (rtos (cadadr el) 2 7)
                    "' lon='" (rtos (caadr el) 2 7) "' />")
    )
    (write-line z fi)
  )
  (foreach el wl
    (setq wz (1- wz)                    ; way counter
          z (strcat "  <way id='" (itoa wz) tv ">")
    )
    (write-line z fi)
    (foreach nn el
      (setq z (strcat "    <nd ref='" (itoa nn) "' />"))
      (write-line z fi)
    )
    (write-line "  </way>" fi)
  )
  (write-line "</osm>" fi)
  (close fi)
  (princ)
)









_______________________________________________
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-de

Antwort per Email an