Рисование леса и других однородных полигонов - скрипт JOSM+python

:frowning:
Или конкретно туплю, или одно из двух…
вроде, всё загрузил и установил (Питон, модуль для него же, fuzzer и fuzzyselect.py)
JOSM 3329, Shft-K вызывается, возникает ошибка : “Child script have returned invalid data”
ЗЫ В скрипте fuzzyselect.py не нашел где адрес WMS прописать…
(как только fuzzer появился, устанавливал, всё работало, а с новыми версиями не идёт…)
Как говориться, Help… :frowning:

Pavlo, текущее руководство - на вики:

http://wiki.openstreetmap.org/wiki/JOSM/Plugins/Fuzzer

Проверь, поставил ли ты все зависимости, оттуда ли взял fuzzyselect.py и сопутствующие файлы, и что пишет JOSM в консоль при вызове shift-K.

У меня всё прекрасно работает… В консоли что пишет?

все файлы с WIKI, всё вроде, установил нормально (но , видимо, не всё…)
В консоли после Shift-K и ошибки в JOSMе пишет:

python ./fuzzyselect.py 61.18834493952942 55.35873893503078 262318.72570721887
Traceback (most recent call last):
File “./fuzzyselect.py”, line 10, in
from canvas import WmsCanvas
File “C:\Program Files\JOSM\josmprefs\plugins\fuzzer\canvas.py”, line 17, in <
module>
import projections
File “C:\Program Files\JOSM\josmprefs\plugins\fuzzer\projections.py”, line 18,
in
import pyproj
ImportError: No module named pyproj
org.openstreetmap.josm.io.IllegalDataException: ╤ЄЁюър 1 ёЄюысхЎ 1: Premature en
d of file.
at org.openstreetmap.josm.io.OsmReader.parseDataSet(OsmReader.java:592)
at fuzzer.FuzzySelectAction$2.run(FuzzySelectAction.java:126)
at java.lang.Thread.run(Unknown Source)
Caused by: org.xml.sax.SAXParseException: Premature end of file.
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAX
ParseException(Unknown Source)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalErro
r(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(
Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(U
nknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$Prolog
Driver.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(U
nknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImp
l.scanDocument(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(U
nknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(U
nknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown So
urce)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Un
known Source)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.p
arse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(Unknown Source)
at org.openstreetmap.josm.io.OsmReader.parseDataSet(OsmReader.java:573)
… 2 more

единственное, что понял, какой-то “pyproj” ищет…
(из иностранных языков проходил в школе немецкий, да и тот проходил мимо :slight_smile: )
ЗЫ карты Yahoo, космоснимки, LandSat, результат один…

Нда, у меня fuzzyselect.py гораздо старее… Для новой версии нужно установить pyproj.
Выложил новую версию фуззера, теперь она будет сообщения из stderr прямо в окно ошибки выдавать.

поставил pyproj теперь еще страннее ругается…
python ./fuzzyselect.py 61.822868217467324 54.86282164548316 733754.5130376416
(704360, 332357)
(61.822868217467324, 54.862821645483159)
http://wms.latlon.org/?layers=yhsat&width=256&height=256&srs=EPSG:3857&bbox=6878109.55321,7328170.77575,6887893.49283,7337954.71537
Traceback (most recent call last):
File “./fuzzyselect.py”, line 78, in
initcolour = web[x,y]
File “C:\Documents and Settings\STV\Application Data\JOSM\plugins\fuzzer\canvas.py”, line 62, in getitem
self.FetchTile(tile_x, tile_y)
File “C:\Documents and Settings\STV\Application Data\JOSM\plugins\fuzzer\canvas.py”, line 77, in FetchTile
contents = urllib2.urlopen(remote).read()
File “C:\Python26\lib\urllib2.py”, line 126, in urlopen
return _opener.open(url, data, timeout)
File “C:\Python26\lib\urllib2.py”, line 391, in open
response = self._open(req, data)
File “C:\Python26\lib\urllib2.py”, line 409, in _open
‘_open’, req)
File “C:\Python26\lib\urllib2.py”, line 369, in _call_chain
result = func(*args)
File “C:\Python26\lib\urllib2.py”, line 1161, in http_open
return self.do_open(httplib.HTTPConnection, req)
File “C:\Python26\lib\urllib2.py”, line 1136, in do_open
raise URLError(err)
urllib2.URLError: <urlopen error [Errno 10022] >

Проверь интернеты. Точно проксей нет по пути?

проксей нет. есть файрвол но он дает полный доступ вебкиту к инету. там даже видно что что-то качается. но ошибка вылазит :frowning:
ладно пусть это будет мой касяк.
а чтобы яху на ирс нужно заменить josm_string = “http://wms.latlon.org/?layers=yhsat&” в fuzzyselect.py на josm_string = “http://irs.gis-lab.info/?layers=irs&” ?
можете посоветовать какие параметры чувствительности цвета нужно подправить для ирс? гамма цветов от яху сильно отличается…

попробовал подменить строки и снова та же беда только по другому начинается…
python ./fuzzyselect.py 61.704063317488696 54.87707162031721 551914.3907853956
(704014, 332285)
(61.704063317488696, 54.87707162031721)
http://irs.gis-lab.info/?layers=irs&width=256&height=256&srs=EPSG:3857&bbox=6868325.61359,7337954.71537,6878109.55321,7347738.65499
Traceback (most recent call last):
File “./fuzzyselect.py”, line 78, in
initcolour = web[x,y]

в файрволе поглядел явамашина чегото скачала с гислаба. с инетом точно нормально все

Явамашина качать не должна. Качать должен питон.

По IRS работа фаззера не гарантируется и не предполагается, каждый действует на свой страх и риск :slight_smile:

Тоже установил pyproj… Вроде заработало :slight_smile:
Но рисует совсем не то, что на подложке (заменял в josm_string на космоснимки и оставлял яху, ландсат не захотел обрабатывать…)
Т.Е. некоторую область обводит, но, даже при очень четком рисунке участка леса, совсем не той конфигурации, даже близко не похоже…
Да и срабатывает не каждый раз…

ЗЫ А как корректно ландсат подключить? у нас у негол довольно контрастные снимки лесов/озер…

По ссылке из первого поста - http://latlon.org/fuzzyselect.py ничего нет.
В скрипте по ссылки из wiki - http://play.latlon.org/josm/fuzzy/fuzzyselect.py нету zoom_no_more_than

И еще вопрос - какой zoom указывать для IRS?

Ссылки из WIKI:
cd ~/.josm/plugins/fuzzer
wget http://play.latlon.org/josm/fuzzy/canvas.py
wget http://play.latlon.org/josm/fuzzy/fuzzyselect.py
wget http://play.latlon.org/josm/fuzzy/projections.py

отваливаются по таймауту.
где еще можно взять скрипты?

citrin: плагин не работает с IRS. просто потому что ирс весь зёлёный.

Aleksey Ovchinnikov: электрики взяли за обыкновение отключать свет, когда меня нет дома. Перевключил.

Опять переотключили! :slight_smile:

Карма у тебя такая. Модем ночью сгорел.
Выслал почтой. :slight_smile:

Оттенки зеленого разные есть. Глазами лес по IRS можно рисовать (если знать где он есть). Почему тогда нельзя автоматически выделить однородную область вокруг заданной точки.

Еще есть озера, которые на IRS виды более четко (если берега не заболочены)

Спасибо за скрипты. Все зависимости установил. При запуске скрипта долгий трейс и ошибка.
urllib2.URLError: <urlopen error [Errno 104] Connection reset by peer>

Попробовал руками вписать в браузер:
http://wms.latlon.org/?layers=yhsat&width=256&height=256&srs=EPSG:3857&bbox=9715452.04316,7132491.98334,9725235.98278,7142275.92296
отвалился по таймауту, оно тоже отключено электриками? :wink:

ЗЫ: Или как деды учат свой tWMS ставить придется?

PSS: Поставил таки я его не дождавшись ответа дедов. заработал через пень колоду и плагин и кэш :slight_smile:

Обновил JOSM до стабильной версии 3514 и Fuzzer перестал работать. Точнее теперь он вываливается с предложением отключиться. До этого все прекрасно работало. Есть ли способ как-то побороть эту беду?
Вот дамп сообщения об ошибке:

Repository Root: http://josm.openstreetmap.de/svn
Build-Date: 2010-09-06 01:31:24
Last Changed Author: stoecker
Revision: 3514
Repository UUID: 0c6e7542-c601-0410-84e7-c038aed88b3b
URL: http://josm.openstreetmap.de/svn/trunk
Last Changed Date: 2010-09-05 23:03:46 +0200 (Sun, 05 Sep 2010)
Last Changed Rev: 3514

Identification: JOSM/1.5 (3514 ru)
Memory Usage: 101 MB / 989 MB (40 MB allocated, but free)
Java version: 1.6.0_21, Sun Microsystems Inc., Java HotSpot™ Client VM
Operating system: Windows XP
Dataset consistency test: No problems found

Plugin: PicLayer (22549)
Plugin: dataimport (22542)
Plugin: download_along (22427)
Plugin: fuzzer (15)
Plugin: lakewalker (21706)
Plugin: multipoly (22171)
Plugin: multipoly-convert (21706)
Plugin: openvisible (21706)
Plugin: reverter (22533)
Plugin: routing (22549)
Plugin: tageditor (21026)
Plugin: tagging-preset-tester (22454)
Plugin: turnrestrictions (22477)
Plugin: validator (22805)
Plugin: waydownloader (21706)
Plugin: wayselector (23103)
Plugin: wmsplugin (22964)

java.lang.NoSuchMethodError: wmsplugin.WMSLayer.getDx()D
at fuzzer.FuzzySelectAction.mouseClicked(FuzzySelectAction.java:269)
at java.awt.AWTEventMulticaster.mouseClicked(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

Нда, много там в wmsplugin-е наворотили, а у меня даже свежего скрипта фуззера нет, чтобы проверить…
В общем, советую пока на ext_tools переключиться, ох хоть в SVN-е лежит и хоть как-то поддерживается. Вроде как IRS уже нормально перепривязали, сдвиг wms-подложки всё-равно не нужен…

Спасибо, буду разбираться.

UPD:
Что-то не получатся. :frowning:
Версия Питона - 2.6.5.14
Командная строка в ext_tools такая:
python “C:\Documents and Settings\Valentin\Application Data\JOSM\plugins\fuzzer\fuzzyselect.py” {lon} {lat} {PPD}

Но при срабатывании скрипта выскакивает окно с ошибкой:
python “C:\Documents and Settings\Valentin\Application Data\JOSM\plugins\fuzzer\fuzzyselect.py” 35.88570656851863 62.40583140847348 1095374.0304219993
(628812, 289950)
(35.885706568518629, 62.405831408473482)
http://wms.latlon.org/?layers=yhsat&width=256&height=256&srs=EPSG:3857&bbox=3991847.36517,8952304.75276,4001631.30479,8962088.69238
Traceback (most recent call last):
File “C:\Documents and Settings\Valentin\Application Data\JOSM\plugins\fuzzer\fuzzyselect.py”, line 78, in
initcolour = web[x,y]
File “C:\Documents and Settings\Valentin\Application Data\JOSM\plugins\fuzzer\canvas.py”, line 62, in getitem
self.FetchTile(tile_x, tile_y)
File “C:\Documents and Settings\Valentin\Application Data\JOSM\plugins\fuzzer\canvas.py”, line 77, in FetchTile
contents = urllib2.urlopen(remote).read()
File “C:\Python\lib\urllib2.py”, line 126, in urlopen
return _opener.open(url, data, timeout)
File “C:\Python\lib\urllib2.py”, line 391, in open
response = self._open(req, data)
File “C:\Python\lib\urllib2.py”, line 409, in _open
‘_open’, req)
File “C:\Python\lib\urllib2.py”, line 369, in _call_chain
result = func(*args)
File “C:\Python\lib\urllib2.py”, line 1161, in http_open
return self.do_open(httplib.HTTPConnection, req)
File “C:\Python\lib\urllib2.py”, line 1136, in do_open
raise URLError(err)
urllib2.URLError: <urlopen error [Errno 11001] getaddrinfo failed>