Author: orbiter
Date: 2008-02-12 16:39:32 +0100 (Tue, 12 Feb 2008)
New Revision: 4477

Added:
   trunk/source/de/anomic/ymage/ymageOSM.java
Modified:
   trunk/source/de/anomic/server/serverObjects.java
   trunk/source/de/anomic/ymage/ymageToolCircle.java
   trunk/source/de/anomic/ymage/ymageToolPrint.java
Log:
experiments wit openstreetmaps

Modified: trunk/source/de/anomic/server/serverObjects.java
===================================================================
--- trunk/source/de/anomic/server/serverObjects.java    2008-02-10 22:50:09 UTC 
(rev 4476)
+++ trunk/source/de/anomic/server/serverObjects.java    2008-02-12 15:39:32 UTC 
(rev 4477)
@@ -275,6 +275,16 @@
         }
     }
 
+    public double getDouble(String key, double dflt) {
+        String s = (String) super.get(key);
+        if (s == null) return dflt;
+        try {
+            return Double.parseDouble(s);
+        } catch (NumberFormatException e) {
+            return dflt;
+        }
+    }
+
     // returns a set of all values where their key mappes the keyMapper
     public String[] getAll(String keyMapper) {
         // the keyMapper may contain regular expressions as defined in 
String.matches

Added: trunk/source/de/anomic/ymage/ymageOSM.java
===================================================================
--- trunk/source/de/anomic/ymage/ymageOSM.java  2008-02-10 22:50:09 UTC (rev 
4476)
+++ trunk/source/de/anomic/ymage/ymageOSM.java  2008-02-12 15:39:32 UTC (rev 
4477)
@@ -0,0 +1,112 @@
+// ymageOSM.java
+// (C) 2008 by Michael Peter Christen; [EMAIL PROTECTED], Frankfurt a. M., 
Germany
+// first published 12.02.2008 on http://yacy.net
+//
+// This is a part of YaCy, a peer-to-peer based web search engine
+//
+// $LastChangedDate: 2006-04-02 22:40:07 +0200 (So, 02 Apr 2006) $
+// $LastChangedRevision: 1986 $
+// $LastChangedBy: orbiter $
+//
+// LICENSE
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+package de.anomic.ymage;
+
+import java.awt.image.BufferedImage;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+
+import javax.imageio.ImageIO;
+
+import de.anomic.plasma.plasmaHTCache;
+import de.anomic.plasma.plasmaSwitchboard;
+import de.anomic.yacy.yacyURL;
+
+public class ymageOSM {
+    
+    // helper methods to load map images from openstreetmap.org
+    
+    public static ymageMatrix getCombinedTiles(tileCoordinates t11) {
+        tileCoordinates t00, t10, t20, t01, t21, t02, t12, t22;
+        t00 = new tileCoordinates(t11.xtile - 1, t11.ytile - 1, t11.zoom);
+        t10 = new tileCoordinates(t11.xtile    , t11.ytile - 1, t11.zoom);
+        t20 = new tileCoordinates(t11.xtile + 1, t11.ytile - 1, t11.zoom);
+        t01 = new tileCoordinates(t11.xtile - 1, t11.ytile    , t11.zoom);
+        t21 = new tileCoordinates(t11.xtile + 1, t11.ytile    , t11.zoom);
+        t02 = new tileCoordinates(t11.xtile - 1, t11.ytile + 1, t11.zoom);
+        t12 = new tileCoordinates(t11.xtile    , t11.ytile + 1, t11.zoom);
+        t22 = new tileCoordinates(t11.xtile + 1, t11.ytile + 1, t11.zoom);
+        ymageMatrix m = new ymageMatrix(768, 768, ymageMatrix.MODE_REPLACE, 
"FFFFFF");
+        BufferedImage bi;
+        bi = getSingleTile(t00); if (bi != null) 
m.insertBitmap(getSingleTile(t00),   0,   0);
+        bi = getSingleTile(t10); if (bi != null) 
m.insertBitmap(getSingleTile(t10), 256,   0);
+        bi = getSingleTile(t20); if (bi != null) 
m.insertBitmap(getSingleTile(t20), 512,   0);
+        bi = getSingleTile(t01); if (bi != null) 
m.insertBitmap(getSingleTile(t01),   0, 256);
+        bi = getSingleTile(t11); if (bi != null) 
m.insertBitmap(getSingleTile(t11), 256, 256);
+        bi = getSingleTile(t21); if (bi != null) 
m.insertBitmap(getSingleTile(t21), 512, 256);
+        bi = getSingleTile(t02); if (bi != null) 
m.insertBitmap(getSingleTile(t02),   0, 512);
+        bi = getSingleTile(t12); if (bi != null) 
m.insertBitmap(getSingleTile(t12), 256, 512);
+        bi = getSingleTile(t22); if (bi != null) 
m.insertBitmap(getSingleTile(t22), 512, 512);
+        return m;
+    }
+    
+    public static BufferedImage getSingleTile(tileCoordinates tile) {
+        yacyURL tileURL;
+        try {
+            tileURL = new yacyURL(tile.url(), null);
+        } catch (MalformedURLException e) {
+            return null;
+        }
+        System.out.println("*** DEBUG: fetching OSM tile: " + 
tileURL.toNormalform(true, true));
+        InputStream tileStream = 
plasmaHTCache.getResourceContentStream(tileURL);
+        if (tileStream == null) {
+            // download resource using the crawler and keep resource in memory 
if possible
+            plasmaHTCache.Entry entry = 
plasmaSwitchboard.getSwitchboard().crawlQueues.loadResourceFromWeb(tileURL, 
20000, true, false);
+            if ((entry == null) || (entry.cacheArray() == null)) return null;
+            tileStream = new ByteArrayInputStream(entry.cacheArray());
+        }
+        try {
+            return ImageIO.read(tileStream);
+        } catch (IOException e) {
+            return null;
+        }
+    }
+
+    public static class tileCoordinates {
+        
+        int xtile, ytile, zoom;
+
+        public tileCoordinates(final double lat, final double lon, final int 
zoom) {
+            this.zoom = zoom;
+            this.xtile = (int) Math.floor((lon + 180) / 360 * (1 << zoom));
+            this.ytile = (int) Math.floor((1 - Math.log(Math.tan(lat * Math.PI 
/ 180) + 1 / Math.cos(lat * Math.PI / 180)) / Math.PI) / 2 * (1 << zoom));
+        }
+        
+        public tileCoordinates(int xtile, int ytile, int zoom) {
+            this.zoom = zoom;
+            this.xtile = xtile;
+            this.ytile = ytile;
+        }
+        
+        public String url() {
+            return("http://tile.openstreetmap.org/"; + zoom + "/" + xtile + "/" 
+ ytile + ".png");
+        }
+
+    }
+}

Modified: trunk/source/de/anomic/ymage/ymageToolCircle.java
===================================================================
--- trunk/source/de/anomic/ymage/ymageToolCircle.java   2008-02-10 22:50:09 UTC 
(rev 4476)
+++ trunk/source/de/anomic/ymage/ymageToolCircle.java   2008-02-12 15:39:32 UTC 
(rev 4477)
@@ -1,3 +1,29 @@
+// ymageToolCircle.java
+// (C) 2007 by Michael Peter Christen; [EMAIL PROTECTED], Frankfurt a. M., 
Germany
+// first published 22.05.2007 on http://yacy.net
+//
+// This is a part of YaCy, a peer-to-peer based web search engine
+//
+// $LastChangedDate: 2006-04-02 22:40:07 +0200 (So, 02 Apr 2006) $
+// $LastChangedRevision: 1986 $
+// $LastChangedBy: orbiter $
+//
+// LICENSE
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
 package de.anomic.ymage;
 
 import java.util.ArrayList;

Modified: trunk/source/de/anomic/ymage/ymageToolPrint.java
===================================================================
--- trunk/source/de/anomic/ymage/ymageToolPrint.java    2008-02-10 22:50:09 UTC 
(rev 4476)
+++ trunk/source/de/anomic/ymage/ymageToolPrint.java    2008-02-12 15:39:32 UTC 
(rev 4477)
@@ -1,3 +1,29 @@
+// ymageToolPrint.java
+// (C) 2007 by Michael Peter Christen; [EMAIL PROTECTED], Frankfurt a. M., 
Germany
+// first published 22.05.2007 on http://yacy.net
+//
+// This is a part of YaCy, a peer-to-peer based web search engine
+//
+// $LastChangedDate: 2006-04-02 22:40:07 +0200 (So, 02 Apr 2006) $
+// $LastChangedRevision: 1986 $
+// $LastChangedBy: orbiter $
+//
+// LICENSE
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
 package de.anomic.ymage;
 
 public class ymageToolPrint {

_______________________________________________
YaCy-svn mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/yacy-svn

Antwort per Email an