Created
May 30, 2016 16:03
-
-
Save RafalR/886d91005f6c8c94b3e3f43827434d0a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var JOptionPane = javax.swing.JOptionPane; | |
var Main = org.openstreetmap.josm.Main; | |
var Robot = java.awt.Robot; | |
var Point = java.awt.Point; | |
var System = java.lang.System; | |
var Node = org.openstreetmap.josm.data.osm.Node; | |
var Way = org.openstreetmap.josm.data.osm.Way; | |
var LatLon = org.openstreetmap.josm.data.coor.LatLon; | |
var AddCommand = org.openstreetmap.josm.command.AddCommand; | |
var SequenceCommand = org.openstreetmap.josm.command.SequenceCommand; | |
var BufferedReader = java.io.BufferedReader; | |
var InputStreamReader = java.io.InputStreamReader; | |
var URL = java.net.URL; | |
var ConnectWays = org.openstreetmap.josm.plugins.tracer2.ConnectWays; | |
var ServerParam = org.openstreetmap.josm.plugins.tracer2.preferences.ServerParam; | |
var cmd = new Array(); | |
var errors =""; | |
var serverUrl = "http://localhost:49243/"; | |
var sName = "geo"; | |
var sUrl = "wms:http://mapy.geoportal.gov.pl/wss/service/pub/guest/G2_BDOT_BUD_2010/MapServer/WMSServer?FORMAT=image/jpeg&VERSION=1.1.1&SERVICE=WMS&REQUEST=GetMap&LAYERS=1,2,3,4,5,6,7,8,9&STYLES=&SRS={proj}&WIDTH={width}&HEIGHT={height}&BBOX={bbox}"; | |
var sTileSize = 0.0004; | |
var sResolution = 2048; | |
var sMode = "boundary"; | |
var sThreshold = 127; | |
var sPointsPerCircle = 16; | |
var colors = { | |
"house": [203, 68, 0], // cb4400, | |
"yes": [248, 186, 113], //f8ba71, | |
"industrial": [161, 161, 161]//, //a1a1a1 | |
//"public": [159, 64, 44] //9f402c | |
}; | |
function getMapView() { | |
if (Main.main == null) return null; | |
if (Main.map == null) return null; | |
return Main.map.mapView; | |
} | |
function contains(pn){ | |
var x = pn.getX() - pm.getX(); | |
var y = pn.getY() - pm.getY(); | |
return (sm.height > y && sm.width > x) | |
} | |
function colorDiff(r1, g1, b1, r2, g2, b2){ | |
var r = 255 - Math.abs(r1 - r2); | |
var g = 255 - Math.abs(g1 - g2); | |
var b = 255 - Math.abs(b1 - b2); | |
r /= 255; | |
g /= 255; | |
b /= 255; | |
return (r + g + b) / 3; | |
} | |
function checkColor(c){ | |
for(k in colors){ | |
//k - typ budynku | |
var df = colorDiff(c.getRed(), c.getGreen(), c.getBlue(), colors[k][0], colors[k][1], colors[k][2]); | |
if(.92<df){ | |
var x = pn.getX() - pm.getX(); | |
var y = pn.getY() - pm.getY(); | |
var nPos = mv.getLatLon(x, y) | |
trace(nPos, k); | |
//getPos(pn) | |
} | |
} | |
} | |
function trace(pos) { | |
var oUrl = new URL(serverUrl + "traceOrder=GetTrace" + "&traceLat=" + pos.lat + "&traceLon=" + pos.lon + "&traceName=" + sName + "&traceUrl=" + sUrl + "&traceTileSize=" + sTileSize + "&traceResolution=" + sResolution + "&traceMode=" + sMode + "&traceThreshold=" + sThreshold + "&tracePointsPerCircle=" + sPointsPerCircle); | |
try{ | |
var oReader = new BufferedReader(new InputStreamReader(oUrl.openStream())); | |
var str =""; | |
while ((strLine = oReader.readLine()) != null) { | |
str += strLine; | |
} | |
str = str.slice(1,-1); | |
var ll = str.split(")("); | |
var way = new Way(); | |
var firstNode = null; | |
for(var i=0;i<ll.length;i++){ | |
ll[i] = ll[i].split(":"); | |
var cord = new LatLon(ll[i][0], ll[i][1]); | |
var node = new Node(cord); | |
if (firstNode == null){ | |
firstNode = node; | |
} | |
way.addNode(node) | |
} | |
way.addNode(firstNode) | |
way.put("building", k) | |
var sp = new ServerParam(); | |
Main.main.undoRedo.add(ConnectWays.connect(way, pos, sp, false, false)) | |
//System.out.println(str); | |
}catch (e) { | |
errors+=e; | |
//System.out.println(e); | |
}; | |
} | |
var step = 10; | |
var mv = getMapView(); | |
var pm = mv.getLocationOnScreen(); | |
var sm = mv.getSize(); | |
var px = pm.getX(); | |
var py = pm.getY()+45; | |
var pn | |
/*var fr = new JFrame() | |
var tx = new JTextField() | |
fr.add(t) | |
fr.setSize(100,100) | |
fr.setLocation(800, 600) | |
fr.setVisible(true)*/ | |
//JOptionPane.showMessageDialog(Main.parent, Integer.toHexString(16)); | |
for(var y=1;y<=140;y++){ | |
for(var x=1;x<=260;x++){ | |
pn = new Point(px+x*step, py+y*step) | |
if(contains(pn)){ | |
var c = new Robot().getPixelColor(px+x*step, py+y*step); | |
checkColor(c, pn) | |
}else{break} | |
} | |
//JOptionPane.showMessageDialog(Main.parent, x); | |
} | |
//Main.main.undoRedo.add(new SequenceCommand("Script", cmd)); | |
//JOptionPane.showMessageDialog(Main.parent, mv.getLocationOnScreen()); | |
//System.out.println("Errors: "+errors) | |
System.out.println("Done..."); | |
JOptionPane.showMessageDialog(Main.parent, "Done..."); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment