Programmieren in Java für die Suchmaschinenoptimierung – Webspider und andere Spinnen – Sunburst selbst gemacht als Rastergrafik
Spider rennt immernoch fleißig durchs Netz, hangelt sich via Link zu Knoten und Link und sammelt Webseiten. Das Spider-Unternehmen hat derweil eine neue Grafikabteilung bekommen, die die Excelgrafik einmal mehr redundant machen soll.
Die bereits ermittelten Punktkoordinaten für jede ihren Hierarchieebenen nach kommulierten Webseitenprioritäten.
- Jede Webseite hat eine Priorität, ihre Priorität hängt ab von der Anzahl der von ihr ausgehenden Links. Je größer die Anzahl der Links, desto höher die Priorität.
Die Links geben die hierarchische Struktur der Website wieder. Jeder Schrägstrich bedeutet im allgemeinen, dass wir eine Ebene Tiefer gehen.
Jede höhere Ebene bekommt die Priorität, die aus der Summe der Untergeordneten Webseiten entsteht.
Also, diese Punktkoordinaten geben wir nun weiter an eine Bibliotheksfunktion von Java (javax.imageio.ImageIO), dass aus den Koordinaten Pixel in ein Koordinatensystem setzt und einfärbt. Daraus entsteht dann eine Rastergrafik.

Klar, das Koordinatensystem selber ist nicht sichtbar. x/y = null/null ist dabei oben links. Negative Werte gibt es nicht. Punkte sind in einer Rastergrafik recht einfach zu setzen. Aber wie sieht es mit Linien aus? Auch klaaar, das sind auch einfach nur viele Punkte, die irgendwie nach und nach in die gleiche Richtung laufen. Eine Linie ist in Java besser mit Schleifen zu zeichnen, denn es sind schnell viele Punkte (Vektoren). Und eine Linie im Koordinatensystem ist ja auch nichts anderes als eine mathematische lineare Funktion (Vektorgrafiken).
Hier ist mein Codeschnipsel zum Erzeugen von Punkten und Geraden auf verschiedenen Kreisbahnen, mit dem ich das Diagramm erzeuge.

Der Schnipsel steckt in einer Schleifenkaskade(-abfolge), die ihn so oft aufruft, wie die Anzahl der gefundenen Webseiten ist. Wobei l,k,j Die Anzahl der Webseiten in den verschiedenen Ebenen durchläuft.
Linkszusitemap übergibt dabei die bereits in verschiedenen Kreisebenen eingeordneten Punktkoordinaten.
Das System.out.println ist hier nicht so wichtig. Es dient zur eigenen Übersicht beim Programmieren. Es zeigt mir bei jedem Durchlauf die aktuelle X-Koordinate, die aktuelle Y-Koordinate und eine Zahl für den Farbwert des Pixels an.
img.setRGB erzeugt bspw. an Koordinate X+800 und Y+600 ein Pixel mit der Farbe p. Der Mittelpunkt des Kreises liegt bei X=800, Y=600. Hier platziere ich vier Punkte im Viereck, damit diese Punkte etwas größer sind.
for initialisiert eine Schleife die von h=1 bis zu Maximaltiefe der durchsuchten Links läuft. Hier bei Noixion.net ist die Maximaltiefe bisweilen 3.
Die Abstände der Einheits-kreisebenen habe ich h*2 genommen. Also der erste Kreis hat den Radius 2, der 2. vier, nr. 3 hat Radius 6 usw. Dann habe ich mit 100 Multipliziert. So passt der Kreis auf jeden Fall in ein Jpg mit den Ausmaßen 1600 * 1200, wenn der Mittelpunkt bei 800, 600 liegt und ist außerdem übersichtlich groß.
Für jede Tiefe h läuft die nächste Schleife von e=1 bis 198. Also gibt es hier insgesamt h*e = 600-6 Schleifenaufrufe. Mehr Pixel sollte eine Pixelgerade richtung Mittelpunkt von Kreisebene bis zur nächsten Kreisebene nicht haben. Denn der Radius vergrößert sich je Kreis um 200 Pixel.
If leitet eine Wenn-dann Aussage ein. Hier Pythagoras: Wenn (X,Y aus der h-ten Ebene Kommt) d.h.: im Kreis die Wurzel aus Sinus zum Quadrat und sein Cosinus zum Quadrat zusammen kleiner als h ist, wobei ich h hier mit 200 multipliziere, (dann Zeiche eine Linie richtung Mittelpunkt bis zu einem Kreis tiefer, bestehend aus den Pixeln mit der Farbe p) d.h.: Setze genau dort einen p-farbigen Pixel im Koordinatensystem, wo X=(X-(X*(e/h))/198)+800 und Y=Y-((Y*(e/H))/198)+600 ist. Ja, das passt uuuund ich will diese beiden Formeln jetzt einfach nicht mehr in Worte fassen, weil es schließlich dafür Formeln als Schreibeweise gibt. Wer lust hat rechnet nach.
Das Ergebnis sieht dann so aus:

Hier mit einigen Pixeln zur optisch besseren Abgrenzung der Ebenen. Die Orange markierten Zeilen im erweiterten Codeschnipsel erzeugen nun die Pixelkreise um die Ebenen.


SZ, 23.02.2019
SZ, 15.09.2022