Thursday, January 22, 2015

Processing commands for WiFi maps

In the previous post I have started a story about built-in processing commands for WiFi maps. But the story came out too long for a single post, so I have only managed to cover the starting phase: how to open the command line and how does it look like. Today I'll describe the commands themselves. You can enter several commands in a row delimiting them by spaces. The commands will be executed in the same order as they occur in the editbox.

  • clear:name - clears names of all points
  • clear:neighbors - clears all neighbors (links between points); can be useful after attempt to generate neighbors with inappropriate neighborhood radius
  • clear:signals - clears detailed WiFi measurements (scans) stored in points, but leaves information about detected hotspots and their average signal levels in each point - this may help to shrink map size but prevents probabilistic location algorithm from functioning
  • lineup:IDs-IDe - aligns a series of successive points with identificators IDs-IDe to the starting point IDs; IDs can be larger than IDe or vice versa; alignment is performed in direction with longest distance between points IDs and IDe, for example, if delta in X coordinate is 1000 and delta in Y coordinate is 100 the points will be aligned in a horizontal line with Y equal to Y of the starting point IDs and preserved X coordinates
  • stretch:IDs-IDe-PERCENTS - expands or squeezes a series of points in direction from IDs to IDe; again IDs can be larger than IDe or vice versa; the PERCENTS is the added fraction of initial distance between the starting point and every other point till the point IDe; for example, if PERCENTS is 10, all points will be moved by 1/10 part of their corresponent distances from IDs; both X and Y directions will be affected
  • shift:IDs-IDe-DX-DY - shifts the points from IDs to IDe by the specified number of image logical pixels in X and Y axes correspondingly
Here is the example of processing command executed on the Kaleidoscope map:

clear:name lineup:1-116 lineup:117-221 lineup:478-462 lineup:435-461 lineup:479-499 lineup:412-434 lineup:385-411 lineup:355-384 stretch:479-499-12 shift:550-575-5-0

The same commands can be executed automatically during XML-map loading. For this purpose a new XML-tag was added to the map specification: preprocess. The tag is optional. The map header example:

<place xmlns="http://weborienteer.com/wifiline">
  <desc>
    <header>
      <id>RU.MM.SZAO.KA</id>
      <name>Kaleidoscope Shopping Center</name>
      <date>2015-01-10 10:10:10</date>
      <coordinates longitude="37.4446" latitude="55.850567" />
      <format>1.2</format>
      <images default="1" scale="85">
        <image floor="1" svgfile="k1.svg" azimuth="155.0"></image>
      </images>
      <preprocess>clear:name lineup:1-116 lineup:117-221 lineup:478-462 lineup:435-461 lineup:479-499 lineup:412-434 lineup:385-411 lineup:355-384 stretch:479-499-12 shift:550-575-5-0</preprocess>
    </header>
  </desc>
  ...
This new feature will hopefully help to refine WiFiLine maps and make them good looking.

Wednesday, January 21, 2015

Secret command line for WiFi maps postprocessing

In one of my previous posts I have introduced new WiFiLine map. This is a demo map created for a shopping center in Moscow, this is why it was announced in Russian only. The most important thing about the map is that it was scanned using new continuous scanning mode. And if you look at the screenshot of the map (in this post), you may wonder how it became possible to line up all measurement points in horizontal and vertical axes. If you ever tried to scan a map in WiFiLine you may know that points appear at shaky locations because they follow your touches, and these manual operations can hardly be perfectly aligned.

Of course, one could export the map into XML-file and edit coordinates of the points manually, but this would be a lot of work. Fortunately, new WiFiLine provides a convenient way for polishing maps in semi-automatic manner. Let me describe how to unlock some features hidden by default.

First, make sure that Scan and edit mode is enabled. Then open right-side panel with the list of scan points. Touch the header "Points" with one finger and hold it, then tap the header with another finger. This will open an additional panel with command line at the bottom of the screen, similar to what is shown on the following screenshot.

Please notice there is a 2-state button S/n in the right corner. If you press it, the list of points will be switched to an alternative view, where every point is expanded with its neighbors (only identificators of neighboring points are shown).

In this view, a tap on a link will bring a confirmation dialog for deletion of this link. Press OK to confirm or No to cancel this action. Don't forget that links can be (and usually are) bidirectional, that is point N2 is listed as a neighbor in the point N1 and vice versa. By removing a neighbor in one of the points (for example, N2 from N1) you do not automatically remove the symmetrical link in opposite direction (N1 from N2). If you want to remove both links you should delete corresponding neighbors in both points. It can be necessary to delete the link if both directions if there is a wall between the points. And it makes sense to delete a link only in one direction and keep it for another if the points are connected by a one-way escalator.

Why do you need to delete some links? Well, because it's very usefull to generate a mass of links between points automatically by means of the command Generate neighbors. It will take current Neighborhood radius from the Settings and bind every two points with a distance less than the given number of meters between them. Of course, this is fast and justified, but this is also a bit straightforward, in the sense that any real-world obstacles are not taken into account. This is why it's normally required to remove impossible links between automatically generated neighbors.

By pressing the button s/N once more you revert the list of points to its initial view with hotspot signals inside every point.

Well, finally we get to the command line itself, and I'd like to write you about fancy postprocessing commands, but this post does already look like a fat one. So let divide it into 2 parts. So I'm writing here:

To be continued...

Tuesday, January 20, 2015

Опубликована новая демо-карта

На сервер добавлена новая карта навигации для торгово-развлекательного центра "Калейдоскоп" (её изображение уже было опубликовано в сообщении More details about future version of WiFiLine: part III). Это демо-версия - в ней имеется лишь первый этаж, причем без детализации о конкретных торговых объектах и без поиска. Однако она позволяет оценить навигацию по холлам.

Карта была получена с использованием нового режима сканирования в движении. Именно поэтому точек сканирования так много, и они расположены по прямым линиям. После сканирования были использованы встроенные функции "Генерации соседей" и "Генерации дополнительных измерений" (об этой возможности рассказывалось в анонсе версии 1.0.18).

Вас может удивить, что линии серий сканирования в большинстве своем идут строго по горизонтали или вертикали, чего трудно было бы добиться в ручном режиме. Действительно, они были отредактированы с помощью специальных функций постобработки карты, о которых я расскажу в одном из будущих постов.

Monday, January 19, 2015

Выпущена новая основная версия WiFiLine

Я рад сообщить, что выпущена версия WiFiLine 1.1.0. Приложение значительно переработано.

Главные изменения:

* Современный интерфейс пользователя с выдвижными панелями с левой и правой границ экрана;
* Новый режим навигации - наивный умножитель;
* Многочисленные новые функции (например, удаление хотспота, отмена последнего сканирования и пр.);

Некоторые из новых возможностей уже описывались в этом блоге. О других еще будет рассказано.

Логотип программы также изменился. К сожалению в Андроиде есть давнишний баг: иконки обновленных программ не "подхватываются" системой. Поэтому Вы можете не увидеть новую иконку, если не удалите и не переустановите программу заново.

Обратите внимание, что WiFiLine - полнофункциональное приложение для навигации и создания карт: Вам не нужно использовать WiFiLine Редактор. WiFiLine Редактор не был обновлен, поэтому его можно использовать, если возникают какие-либо специфические проблемы с этой новой версией.

New major release of WiFiLine is out

I'm glad to inform you that WiFiLine 1.1.0 has been released. The app is reworked thoroughly.

Main changes are:

* New modern user interface with drawers sliding from the left and from the right sides of the screen;
* New location mode - naive multiplier;
* Numerous new functions (delete a hotspot, last scanning undo and others);

Some of the new features have been already covered in the blog. The others will be described in future.

Please note that the app's logo is also updated. Unfortunately Android has an old bug: the icons of updated apps are not refreshed correctly. So you may not see the new icon in the launcher unless you completely remove and then reinstall the app.

Also please note that WiFiLine is a fully functional navigation app: you have no need to use WiFiLine Editor anymore. WiFiLine Editor has not been updated - you may use it if you experience some problems with the new major release.

Friday, January 16, 2015

More details about future version of WiFiLine: part IV

Today I'm finally posting short and descriptive answer to the question that has been left open in one of my previous posts regarding new version of WiFiLine .

I think it was easy to guess that while in the location mode WiFiLine shows the search dialog in the right-side drawer.

Of course, all searching functionality is left intact (including full text search, category search, and shortest path computation) but now it's easily accessible just inside the main window.

Thursday, January 15, 2015

More details about future version of WiFiLine: part III

From the very beginning WiFiLine has been using fullscreen mode in the main window. This was a feature added to maximize visible area of a map - you know, mobile screens are small and it's hard to fit navigation tips and context in the limited space.

New WiFiLine makes the fullscreen mode even more "fully screened" ;-). Latest Android version starting from KitKat (4.4) allows applications to hide the navigation bar at the bottom of the screen. This is a horizontal bar with 3 buttons - back, home, and recents. It takes a lot of space and it's almost empty itself. WiFiLine utilizes this space for maps. Look at the screenshot below - there is no the navigation bar.

Of course, you can temporary restore the status bar and navigation bar by a swipe gesture from top of the screen. This is a built-in Android feature. It will show semitransparent overlays of the status bar and the navigation bar on top of the WiFiLine window. They will be hidden again by timeout.

But if you don't like the fullscreen mode, WiFiLine allows you to switch it off now. There is an option in the context menu of the main window.

Wednesday, January 14, 2015

More details about future version of WiFiLine: part II

Main idea behind the new version of WiFiLine is to provide better usability. It comprises many things, and user iterface counts in the first place. New look and feel of the app is supposed to be more logical than before.

As you already know, quick and easy swipe gesture from the left edge of the screen opens now the panel with settings, that includes an option to select one of three supported modes: navigation, scan and edit, and hotspot signals density.

But there is more for swiping in the app. At every moment a swipe from the right edge of the screen opens additional panel with appropriate content (don't worry - the panels do not interfere with each other - if a user swipes out a panel from the right, the left side panel is pulled in, and vise versa - if a user swipes from the left, the right side panel is pulled in).

The content of the right side panel depends from currently selected mode. For example, in the Scan and Edit mode the panel shows a list of points with measurements. And in the hotspot signals density mode, the panel shows a list of hotspots. And even more - if a map consists of several floors, by default the panels show partial lists of points or hotspots that belong to the current floor only. You may click Show all button to get entire listing. When you zoom in the map the list of points is restricted even more to contain only points from currently visible area.

You may wonder what will be shown in the right panel while in the navigation mode. I'll let you to guess, and give the answer in future posts. Stay tuned.

Monday, January 12, 2015

More details about future version of WiFiLine

Today I'm posting a screen with a map in the updated edit mode. It now provides a grid with logical image coordinates (the ones defined in your SVG image viewBox tag, as you may recall they are used during measurements), and 10 meter scale in the bottom right corner (it's shown only if your map contains a valid scale attribute in the image tag of the map).
The next screen demonstrates new progress indicator shown during continuous scanning. It let you know that WiFi-scanning is actually running (unfortunately, it may occasionally freeze somewhere inside Android system or even hardware), and overall number of aquired measurements is counting in the center.

Sunday, January 11, 2015

New WiFiLine version is under development

I decided to post a small piece of news regarding WiFiLine. Mostly it's intended to let you know that I'm working on a new version of WiFiLine. The app will be reworked considerably. Among most important features are: more simple yet modern looking user interface, new location algorithm, some other improvements in functionality. Take a look at the screens.


I'm planning to share info on the progress with you.