ERLEDIGT
NEIN
NEIN
ANTWORTEN
5
5
ZUGRIFFE
534
534
EMPFEHLEN
-
Hallo,
ich muss momentan für ein projekt folgendes tun.
also ich möchte ein beliebiges shape (polynom) in ein raster transformiern / convertieren.
dabei sind mir natürlich die koordinaten der einzelnen zellen wichtig welche innerhalb des polynoms sind. (brauch ich dann für weitere funktionen)
da ich mich jedoch nicht gut mi c# auskenne und auch nicht so gut mit .NET wüsste ich gerne ob es bereits eine solche funktionalität gibt. (man muss ja nicht alles neu erfinden)
oder kennt jemand eine geeignete open source lösung?
wenn es keine open source lösung gibt und auch nicht im .NET Framework nichts geeignetes vorhanden ist,
wie gehe ich nun an die Sache heran?
und welche Klassen / Verweise benötige ich?
im prinzip das hier
http://webhelp.esri.com/arcgisdeskto...nd_feature.gif
Danke
amArsch
-
gibt bestimmt eine paar libs,
aber sollte auch per Hand nicht so schwer sein,
dein Bild besteht ja aus Pixel, ist ja nichts anderes wie ein Raster.
über die Methode:
kannst du sämtliche Informationen, aus den Bild-Pixel auslesen, (einzelne Farben, Sättigung, usw).Code :1
GetPixel(x, y)
Da du jetzt ein "gröberes" Raster haben willst, als das dir die Pixel selbst bieten, musst du entweder:
- Die Farbinformation eines Rechtecks (also die Pixel von x = a bis x = a+10 und von y = b bis y b+10) zusammen addieren und dann den Mittelwert bilden, das würde auch Abstufungen der Farbe am Randbereich zulassen.
oder
- Die Farbinformation im Rechteck zusammen addieren und dann über einen Schwellenwert entscheiden ob die Farbe ausreichen vorhanden ist oder nicht.
diese Information Zeichnest du dann in ein neues Bild
ich hoffe ich konnte die helfen.
-
15.03.10 10:10 #3pwVergessen Tutorials.de Gastzugang
Erstmal danke FJK,
leider war es nicht das was ich gesucht habe.
Ich wollte einfach aus gegebenen Punkten ein polygon erzeugen, dieses mit möglichst wenig aufwand in ein raster einteilen und diese zellen dann verwenden zum weiter zu arbeiten.
Ich soll nämlich dieses "Gebiet" möglichst gleichäßig und effizient einteilen... also in gleich große stücke einteilen. Daher war mein Ansatz es in viele zellen zu zerlegen und dann
je nachdem wie viele "Teilgebiete" es werden sollen zusammenfassen bzw. einzuteilen.
Aber evtl Hilft mir die Funktion später weiter. Wusste ich bisher auch nicht das das möglich ist.
Habe im .NET Framework leider keine konvertierungsmethode gefunden. Daher die Idee ob es dafür etwas im open source bereich gibt.
Falls jemand weiß ob es doch im .NET Framework etwas gibt oder ne open source möglichkeit kennt würde ich mich über einen Hinweis sehr freuen.
Falls nicht habe ich es mir so gedacht...
1. ich ermittel die punkte die am weitesten recht, link, oben und unten sind... so hätte ich dann die grenzen meines rasters.
2. ich generiere eine 2dim list mit zellen die mein raster komplett abdecken (größe muss angegeben werden) .... je kleiner, desto genau wird das polygon natürlich abgedeckt.
3. ich durchlauf jede zelle und frage ob der zellenmittelpunkt im polygon drin is (erst mal so "ungenau")
4. die zellen die drin sind speicher ich mir wieder in einer liste und kann anschließend damit arbeiten.
Ist die idee gut oder eher aufwändig zu realisieren?
Gruß
amArsch
-
Das dürfte einfach sein. Im Drawing2D-Namespace findest du beispielsweise die GraphicsPath-Klasse. Diese Klasse stellt eine Linie dar, die du aus Geraden, Kurven, Splines, etc. zusammenbasteln kannst. Wenn du die Linie dann dort enden lässt, wo sie anfängt, dann hast du eine Fläche. Mit der IsVisible-Methode der GraphicsPath-Klasse kannst du prüfen, ob ein Punkt innerhalb deiner Fläche oder außerhalb deiner Fläche liegt.
Ich weiß aber nicht ob es reicht einfach zu überprüfen, ob der Mittelpunkt der Rasterfläche in der Fläche liegt. Ich habe dazu ein Bild angehängt um das zu verdeutlichen: orange sei hier zur Fläche zugehörig, weiß soll außerhalb der Fläche liegen und das Bild stellt einen einzigen Rasterpunkt dar. Wenn du so eine Fläche hast, die den Rasterpunkt übermäßig ausfüllt, dann sollte der Rasterpunkt orange werden, obwohl der Mittelpunkt hier nicht in der Fläche liegt.Geändert von Shakie (15.03.10 um 10:36 Uhr)
hihi = -h²
-
15.03.10 14:32 #5pwVergessen Tutorials.de Gastzugang
Hey danke Shakie für die schnelle antwort.
ich glaube, es könnte sein, evtl, ich hoffe sehr das es das ist was ich brauche...
bisher scheint es zu funktionieren. merci vielmals
ja ich weiß schon das das mit der mitte der zelle nicht die optimale lösung ist...
wäre auch nur probeweise... was genaueres hätte ich mir dann ggf. schon noch ausgedacht.
Gruß
amArsch
-
Für die Erstellung deines Polygons kannst du auch die Methode AddPolygon verwenden. Und mit GetBounds() ermittelst du dann das umschließende Rechteck. Ob ein Punkt innerhalb deines Polygons ist, kannst du ermitteln, indem du prüfst, ob er die Füllfarbe hat.
Wenn du weißt, wie viele Zellen du hast, kannst du auch berechnen, wie gross eine Teilfläche sein muss. Um sie zu berechnen, kannst du einen Wachstumsalgorithmus verwenden. Du nimmst eine Zelle als Keim für deine neue Fläche und nimmst nacheinander jeweils die Nachbarzellen hinzu, welche die meisten Flächenzellen oder Außenzellen als Nachbarn haben. So bekommst du auch eine möglichst gerade Grenzlinie.Vielen Dank für die Nutzung des Bewerten- und Danke-Buttons
Wenn man sieht, dass man einen anderen glücklich gemacht hat, ist die Welt um zwei glückliche Menschen reicher.
Ähnliche Themen
-
[JAVA] - Polynom mittels regular expressions auf das Format überprüfen
Von fish-guts im Forum JavaAntworten: 1Letzter Beitrag: 16.12.09, 14:14 -
Objekt im Raster
Von peter333 im Forum Flash PlattformAntworten: 0Letzter Beitrag: 05.07.08, 20:00 -
polynom drehen
Von thomy800 im Forum JavaAntworten: 3Letzter Beitrag: 05.06.07, 18:05 -
raster?
Von kalicki2k im Forum PhotoshopAntworten: 3Letzter Beitrag: 10.05.05, 16:56 -
Raster
Von benyio im Forum PhotoshopAntworten: 3Letzter Beitrag: 30.12.01, 16:01





Zitieren
Login




