Svemir.co

Pigs can fly too ...

Intergraph GeoSpatial Portal 2014 Review

I’ve finally got the project where I could try the latest version of the Intergraph GeoSpatial Portal. Here is my short experience with the Portal, and a few problems that I’ve run into.

Installation

Installation is very simple and straightforward. After the installation is finished, just load WebMap Administrator panel in your browser of choice, and you’ll have under New instance menu an option to create a new GeoSpatial Portal instance. The wizard will copy the files from the Portal template folder, and create a new virtual directory under IIS.

After that, Portal is working out of the box, without any customizations needed. That is very nice and enables you to start playing with the Portal vary fast and easy.

Customization

Before you start working with the portal I strongly suggest that you read two documents that are provided with the Portal: GeospatialPortal_AdministratorGuide.pdf and GeospatialPortal_UserGuide.pdf.

Most of the Portal customization is done via JavaScript, where you are using Intergraph small API that is extending few Ext.js functionality. For example, you can easily add new custom buttons to the existing toolbars. But if you need to do bigger UI modifications to the Portal, like for example, adding your own toolbar, you will need to purchase a SDK. The problem with a SDK is, that is not clearly priced by Intergraph, and to my knowledge SDK is still not available for the version 2014. Also it is worth mentioning that SDK customizations is done in C#. To read more about the SDK, or just to see JavaScript customizations code examples, go to Geospatial Portal SDK page.

In the end I’ve managed to get most of the my needed features without using a SDK by hacking the UI with my custom HTML and JavaScript, and by applying existing CSS classes to maintain existing Portal style. It is not great, but it is working. That is until Ext.js changes ID values of the HTML elements, because IDs are generated dynamically.

Custom language selection is available, but only if you are lucky enough that Intergraph have provided the translations for your language. Portal cannot be fully localized, if the translation files were not provided. There are few sentences that are available to be changed, but not everything. Some labels and messages are baked and compiled into the solution and offered as a part of Portal. This means that translation cannot be done for the complete Portal, and there will be English captions left in the GUI. Again, with some JavasScript hacks that change innerHTML properties, labels can be changed after the portal loads.

Adding your data to the Portal

Since the Portal already requires Webmap, the easiest way to get your data into Portal is by creating a new WMS service with MapPublisher from the GeoMedia. If you ever worked with a MapPublisher, you know that this is a very simple and automated process with wizards. This means that adding your data via WMS is quite simple. Changing the styles, or adding new layers, just requires you to edit your GeoWorkspace in GeoMedia and hit Publish when you are done. And your changes will reflect in the Portal next time you change zoom level and Portal requests new data from the server.

I remember long time ago that Intergraph was claiming that WebMap and GeoMedia are now sharing the same rendering engine. Unfortunately from my experience, this is not the case. For example, lines need to be much thicker in GeoMedia to be rendered nicely by WebMap. Labels on the other hand need to have background color to be readable. Although you must not use white as a background color because it will result with some strange glitch in the display. Using very light grey solves the problem.

Portal supports searching via WFS-G Gazetteer service. This is where I had most of the problems. The service is not very well documented and steps required to get the service working are very confusing. When you create new WFS-G instance from the AdminConsole, you get preconfigured web.config file with lots of options. Getting a simple searchable feature to work was not easy. Thankfully, after a long email conversation with Intergraph support team, they have send me proper and much simpler web.config file that was working, and was much easier to further customize. Many thanks to Jan from the Intergraph support team for the help! After that, adding a WFS-G service to the Portal resulted with much feature richer Portal. To be honest, without the help from the Intergraph support team, I wouldn’t be able to get it work on my own. Especially getting it to work with my custom SRS.1

On the topic of custom SRS, it is worth mentioning that I didn’t use default EPSG:4326 coordinate system nor the publicly available background maps, like for example Google Maps. All my source data were in one coordinate system, and for display I used different coordinate system. Coordinate transformations worked flawlessly.

To improve and customize UX further, you can intersect featureInfoRequested event and add your own code that will be executed when user clicks on the features. From here, using Ext.js possibilities are endless.

Conclusion

Initially, Portal needs some time to fully load. But after that, it is working quite fast.

If you need to get your data visualized on the web very fast and without much coding, I would recommend using the Portal. Price you will pay for the license, compared to the price you would need to pay some developer to develop the portal from the scratch with all the matching features, or the time you would need to invest to code it by yourself, is marginal. Portal is really feature rich and very simple to do basic customizations. The only question is how much of the customizations you need? The answer is the same like for any rapid development tool – if you are satisfied with 90% of the functionality that the Portal offers, it will save you a lot of time and money. But if you need to do a lot of customizations and custom UI design, or code changes, sooner or later you will hit the wall.

Nevertheless, to get your spatial data visualized fast and easy on the web, Intergraph GeoSpatial Portal is the way to go!

To see the Portal in action head to the Intergraph GeoSpatial Demo Portal.


  1. If you need help with WFS-G, get in touch and I will try to help you.

» EPSG.io - Find a Coordinate System and Get Position on a Map

Klokan Technologies GmbH, Switzerland announced EPSG.io, a new web service that simplifies discovery of coordinate reference systems. New service includes a database of over 6000 coordinate systems used in maps worldwide, based on the official EPSG database that is maintained by OGP Geomatics Committee.

A full text search enables searching by Country, EPSG code or by name of a coordinate system. Each coordinate system has a short and rememberable permanent link i.e. http://epsg.io/4326 and is exportable in various formats (WKT, OGC GML, XML, Proj.4, SQL and JavaScript). The whole project is open-source and available on GitHub. On GitHub is also documentation about its API that allows integration of the search functionality and transformations in third party applications.

EPSG.io

How does EPSG.io differs from Spatial Reference that offers a similar service?

  • It is much easier to find the coordinate systems (for example query “utm wgs norway” gives list of all UTM zones with WGS covering area of Norway).
  • All available transformations for selected coordinate reference system are visible and applicable (it is possible to find alternative 7 parameter transformation for Proj4js replacing a default grid transformation, or choose a transformation with higher accuracy for a selected area).
  • Preview location for any numerical coordinates on a detailed map – with copy&paste functionality.
  • Complete EPSG database with codes for datums, units, transformations, etc is indexed and searchable, and the individual EPSG records are linked from every detail page.

Take Your Drone for a Walk and Shoot Some Aerial Photos on the Way

Zurich-based academic and researcher Sergei Lupashin had an idea – to put the quadcopter on a leash. The story behind it is to show that a leash can completely change the nature of a drone and that it eliminates a need for special piloting skills. Lupashin compares a drone on a leash to a kite, and therefore calls it Fotokite.

At the core of the Fotokite approach is the “keep it simple” philosophy. There’s no remote control and there is no GPS unit, just accelerometers and a gyro that measures the speed of rotation. The software on board of the Fotokite takes care of maintaining the same relevant angle to the direction its “pilot” is moving. This allows a steady control over photos and video shots from above.

And what is the best part? Because of the tether, the drone is not autonomous. And because it is not autonomous, it falls outside of regulation on “unmanned aerial vehicles” in most cases. Especially in the United States where Federal Aviation Administration regulations on “unmanned aerial vehicles” don’t apply to tethered aircrafts. Fotokite

Hubsan X4 H107C Review

For a long time now, I have been reading stories about drones (also known as Unmanned Aerial Vehicles (UAV) or Unmanned Aerial Systems (UAS)) and their use in surveying. Drones have altered modern-day photogrammetry by easing capturing of photogrammetric geodata, especially compared to satellites, airborne photogrammetry and traditional land surveying. They are more immune to bad weather than satellites or aircrafts, and they are much cheaper to run. All this intrigued me to buy one. But the problem was their high price, and very long and steep learning curve to properly fly them without breaking them, or hurting somebody on the way.

Until I’ve found interesting and very affordable little drone with a camera – Hubsan X4 H107C. It is small 2.4Ghz 4 channels RC quadcopter with 0.3 MP camera, 6-axis gyro and flying outdoor ability. It was a perfect way for to me to get into drones for affordable price. After some googling, I’ve found it on the Chinese webshop called Banggood. The shop has very mixed people reviews, but I’ve decided to take a shoot and ordered one from them. I also bought reserve battery and 16GB MicroSD card to have more flying time and to record video.

After a standard one month of waiting for a package from China, the drone has arrived. Everything was very nicely packaged and I had no complains. I opened the box, and in the time I recharged two batteries I’ve read the instructions. Nothing complicated I thought. But how wrong I was!

I did some initial calibration, and on the first lift-off drone smashed to the wall. Of course, one little blade was completely broken with other blades severely damaged.

This was the end of my first test flight.

I’ve ordered immediately new replacement blades set, plus few additional spare blades, plus protection cover so the next time I hit the wall I have at least some buffer. Again, one month later the spare parts arrived and I was ready for new round of testing. This time I was smarter and better prepared.

While I was waiting for spare parts to arrive, I was reading and watching YouTube videos on how to calibrate and fly the drone properly. After I replaced all the blades with new ones and fitted cover protection, X4 was ready for a new test flight. Before I moved furniture away, and placed the drone in the middle of an empty room. The second lift-off and test flight was much more successful.

Drone reacts very fast to the commands and is very agile. If you are flying indoor, the X4 will skid around the floor until it reaches a point above the turbulence created by its spinning propellers. You need to lift X4 at least one meter from the ground to get into a clean air. Of course I crashed the drone few more times, but thanks to the protection cover I didn’t break any more blades. The most important thing to bear in mind is that when X4 crashes you need to cut the throttle to zero immediately! This way you protect the blades and the motors. If the motors are unable to rotate during a crash, they will burn out quickly.

X4 comes with 3.7V 380mAh battery with declared flight time around 7 minutes and charging time 40 minutes. My experience confirmed this. However, if you are recording with a camera and doing a lot of manoeuvring (especially if you are flying indoor), the actual flight time is around 5 minutes. This is why you need to invest in some additional batteries. I have at the moment 3 batteries which provide around 15-20 minutes of flying.

Although X4 looks like a child’s toy, it is not. It should be treated with the respect of a full scale drone and it takes patience and lots of practice to be able to fly it properly. Some people are suggesting that you need to invest 10’s of hours into practicing before you can do anything spectacular like pre-programmed flips, or especially if your want to record a nice and stable video.

The Hubsan features 6-axis stabilization system, but it doesn’t have any autopilot mode, which means that it is unable to hover on its own. The X4 needs to be ‘flown’ all the time to maintain an even hover and stable flight. When flying the X4 drone, continual stick inputs are necessary. You must counter the directional movement with reverse stick movements e.g. moving the pitch stick forward will cause the X4 to fly forwards, and to return the X4 to steady hover, you will need to apply back stick momentarily to halt the forward motion.

Outdoor flying is much better experience and more enjoyable than indoor, mostly because you have more free and open space. The X4 is very fast and stable even in windy conditions. When landing you need to be careful not to hit the ground too hard because the plastic housing could break. Soft grass is the best for landing, but you still need to be careful. X4 features 4 little LED lights in two colours that help you better sighting and orienteering. But don’t fly X4 too far away initially, orientation may become a problem with the X4 easily lost against a backdrop of trees, bushes and ground cover. With all this in mind, and initial fear from flying and crashing, I didn’t test its range.

My original plan was to include videos in this review, but my flying skills are not yet that good to produce stable and watchable videos. I’ll post them as soon I’ll have some good and representable footage. In the meantime you can check videos by other Hubsan X4 pilots.

All in all, Hubsan X4 H107C is great little beast and very fun to fly. I would recommend it to anyone interested in RC and drones with limited budget. Just buy a lot of spare parts because you will need them, sooner or later.

» Earth - Global Wind Map

“earth”, a global wind map of the entire world, is a visualization of global weather conditions, based on weather forecast made by supercomputers of National Centers for Environmental Prediction, NOAA / National Weather Service. It is created by Cameron Beccario in a way that first the script downloads and process Global Forecast System weather data in GRIB2 format every three hours, converts the data to JSON and then push them to static hosting. JSON data are calculated and interpolated in user’s browsers and finally shown as a rendered animated 3D wind map.

Wind is represented with green to red to purple gradients, where purple represent greater wind velocity, and the flow of the lines indicates wind direction. You can pull and drag the earth around its axis with a mouse, while mouse click on any location will bring a clicked coordinates and wind speed at that location. You can customize displayed data; like heights for the wind velocity readings, change overlayed data and even change Earth projection!

earth

It is worth noting that the project “earth” was build using only JavaScript frameworks, namely: D3.js, when.js, backbone.js, node.js.

Migration From WordPress to OctoPress

I migrated svemir.co blog from WordPress to OctoPress. Why? you might ask. Wordpress was working great for me and I didn’t have any major issues with it. But it was never a perfect solution for me, and I was always looking for a replacement. Until I’ve found OctoPress, a blogging framework for hackers.

Here are some benefits:

  • Security – no more problems with WordPress nor PHP vulnerabilities.
  • Performance – no more databases, just pure static files, and they are fast.
  • Cost – static files are hosted on Amazon S3 which is very cheap.
  • Design – finally I’m able to use my own design and write custom CSS. And the most important, use custom web fonts of my choice.
  • Subdomains – on WordPress.com you have to pay if you want to use your own domain, and then you need to pay again for every subdomain you want to use.
  • Learning – I’ve learned whole bunch of new technologies, primary Python and Markdown.

OctoPress is definitely blogging framework for hackers; you work just with text editor and terminal. If you are working on Windows, this brings hacking to a whole new level. But I have no regret – it was a fun and educational migration process.

Anyway, blog is now migrated; there are still few small glitches that I need to fix, but as a whole everything is working very well. And in the end, I hope you’ll enjoy new design and reading my blog as much as I enjoyed making it.

If All the Ice Melted Maps

If all the ice on land has melted and drained into the sea, the sea level would raise 216 feet (66 meters) and create new shorelines for our continents and inland seas.

National Geographic created interactive maps that show how would world coastlines look like if all the polar ice caps melt.

Melted Europe

In Europe a lot of big and famous cities would go the away under the rising seas; like Copenhagen, Amsterdam, Venice, Riga, Lisbon, even London.

Melted NA

On the other side of the Atlantic Ocean the situation wouldn’t be any better, if even worse, the whole Florida would be not more, and most of the Eastern Coast of the United States would also go under see, including Boston, New York, Washington, D.C, and New Orleans.

There are more than five million cubic miles of ice on Earth, and some scientists say it would take more than 5,000 years to melt it all. If we continue adding carbon to the atmosphere, we’ll very likely create an ice-free planet, with an average temperature of perhaps 80 degrees Fahrenheit instead of the current 58.

I would love to see true interactive ice melting map, where GIS would be used. But nevertheless, these National Geographic maps are still very fascinating view of what might and probably will be in the not so far away future.

Intergraph Announced New SG&I Support Knowledge Management Web Portal

Intergraph announced new SG&I Support Knowledge Management Web Portal. Portal is based on Oracle’s Knowledge Management application, and provides access the most up-to-date Intergraph support information and now with just one login. Portal brings together systems that were once separated in one location such as product information and downloads, licensing resources, user forums, knowledge base, and Service Request management.

Image

New portal provides:

  • Enhanced customer support experience – The new user interface provides a simple and convenient way to access software product knowledge.
  • A to Z product search – The Products (A-Z) page is a convenient way to find product family and product-specific information. Simply click on your product family or product to see the latest release information, announcements, support notices, and downloads.
  • Intelligent natural language search – Every search uses state-of-the-art natural language processing to understand the true intent of each question. Then, using other search enhancement features such as industry-specific libraries, it finds the best possible answer.
  • User forums for community collaboration – Find and share technical information and connect with the community of product peers globally.
  • Integrated user interface to submit Service Requests – Manage all your Service Requests in one convenient location. You can also check on the status of Change Requests, whether they be your own, your company’s, or both.
  • New content notification – Subscribe to content to receive notices when new or updated information is available.
  • Ability to rate and recommend knowledge content – Help us improve your customer support experience by rating content and giving us feedback.
  • Simple license management – The Licensing Resources page gives you easy access to the embedded license management system. Here you can view used and available licenses, generate licenses, and rehost license servers.
  • Streamlined account management – View your company account information, such as contacts, products on maintenance, and license information.

Viewing Oracle Database Changes in GeoMedia in a Multi-User Environment

If you are working with GeoMedia in a multi-user environment where other users are making modifications to the same dataset you are using, especially if other users are not using GeoMedia to update attribute data, GeoMedia command Warehouse > Refresh with Warehouse Changes will not work as intended.

Refresh with Warehouse Changes

Warehouse > Refresh with Warehouse Changes is used to update the GeoWorkspace for any changes made to the data schema outside of your GeoMedia session. Changes that are made though non-GeoMedia software will not appear unless you close and reopen the connection or restart your session. If you are working with Oracle database, this will slow down your workflow. As described in my Very long Oracle connection opening time in GeoMedia post, this is happening because GeoMedia when establishing an Oracle connection is scanning all the tables in all the schemas for compatibility. The more schemas are available to the connected user, the longer the connection takes.

To solve this problem with Oracle Object Model data server, you can assign Modification Log triggers to the feature classes (tables in Oracle database) you wish to track. These Modification Log Triggers are assigned to feature classes using Database Utilities, and they log all insert, update, or delete events. Warehouse > Refresh with Warehouse Changes then picks up external modifications on these feature classes even if the changes are made by non-GeoMedia applications.

Database Utilities

Behind the scene, Database Utilities creates new trigger on the target table that looks like this:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
CREATE OR REPLACE TRIGGER ADR.MYTABLEGMT AFTER INSERT OR DELETE OR UPDATE ON ADR.MYTABLE FOR EACH ROW
DECLARE
  ModifiedTablesOwner VARCHAR2(255);
  ModifiedTablesTableName VARCHAR2(255);
  ModificationLogOwner VARCHAR2(255);
  ModificationLogTableName VARCHAR2(255);
  SessionID INTEGER;
  RecordCount INTEGER;
  RecordCount1 INTEGER;
  ModType INTEGER;
  TableID INTEGER;
  ModID INTEGER;
  v_Msg VARCHAR2(200);
  v_ErNum NUMBER;
  v_ErTxt VARCHAR2(200);
  v_TF INTEGER;
  e_TableID EXCEPTION;
BEGIN
  ModificationLogOwner := 'GDOSYS';
  ModificationLogTableName := 'MODIFICATIONLOG';
  ModifiedTablesOwner := 'GDOSYS';
  ModifiedTablesTableName := 'MODIFIEDTABLES';
  v_Msg := 'Selecting GMODLOG.NEXTVAL';
  EXECUTE IMMEDIATE 'SELECT GDOSYS.GMODLOG.NEXTVAL  FROM DUAL' INTO ModID;
  v_Msg := 'Get SessionID';
  SELECT USERENV('SESSIONID') INTO SessionID FROM DUAL ;
  v_Msg := 'Querying ModifiedTables for ADR.MYTABLE';
  EXECUTE IMMEDIATE 'select count(*) from all_objects where OWNER=:1 and  OBJECT_NAME = :2 ' into RecordCount1 using ModificationLogOwner, ModificationLogTableName ;
  EXECUTE IMMEDIATE 'select count(*) from all_objects where OWNER = :1 and OBJECT_NAME = :2 ' into RecordCount using ModifiedTablesOwner, ModifiedTablesTableName;
  IF RecordCount > 0 and RecordCount1 > 0 then
  EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM GDOSYS.MODIFIEDTABLES WHERE TABLENAME =  '''||'ADR.MYTABLE'||''' ' INTO TableID ;
  IF TableID = 0 THEN
  EXECUTE IMMEDIATE 'SELECT OBJECT_ID FROM user_objects WHERE object_name = ''MYTABLE'' ' INTO TableID;
    EXECUTE IMMEDIATE 'INSERT INTO GDOSYS.MODIFIEDTABLES (MODIFIEDTABLEID,TABLENAME,KEYFIELD1) VALUES (:1,''ADR.MYTABLE'',''ID1'')' using TableID;
  ELSE
    EXECUTE IMMEDIATE 'SELECT MODIFIEDTABLEID FROM GDOSYS.MODIFIEDTABLES WHERE TABLENAME = ''ADR.MYTABLE'' '  INTO TableID ;
  END IF;
  v_Msg := 'Inserting ModificationLog record ';
  IF INSERTING THEN
    DBMS_OUTPUT.PUT_LINE(' ***** Logging an Attribute INSERT *****');
    ModType := 1;
    EXECUTE IMMEDIATE 'INSERT INTO GDOSYS.MODIFICATIONLOG (MODIFICATIONNUMBER, SESSIONID, "TYPE",MODIFIEDTABLEID, MODIFIEDDATE, KEYVALUE1) VALUES (:1,:2,:3,:4,:5, :6)' using ModID, SessionID, ModType, TableID, SYSDATE, :new.ID1;
  ELSIF UPDATING THEN
    DBMS_OUTPUT.PUT_LINE(' ***** Logging an Attribute UPDATE *****');
    ModType := 2;
    EXECUTE IMMEDIATE 'INSERT INTO GDOSYS.MODIFICATIONLOG (MODIFICATIONNUMBER, SESSIONID, "TYPE",MODIFIEDTABLEID, MODIFIEDDATE, KEYVALUE1) VALUES (:1,:2,:3,:4,:5, :6)' using ModID, SessionID, ModType, TableID, SYSDATE, :old.ID1;
  ELSE
    DBMS_OUTPUT.PUT_LINE(' ***** Logging an Attribute DELETE *****');
    ModType := 3;
    EXECUTE IMMEDIATE 'INSERT INTO GDOSYS.MODIFICATIONLOG (MODIFICATIONNUMBER, SESSIONID, "TYPE",MODIFIEDTABLEID, MODIFIEDDATE, KEYVALUE1) VALUES (:1,:2,:3,:4,:5, :6)' using ModID, SessionID, ModType, TableID, SYSDATE, :old.ID1;
  END IF;
  END IF;
END;

Import CSV or GPX to the GPS Coordinates to Gauss–Krüger Transformation Tool

Like described in future plans section of my GPS coordinates to Gauss–Krüger transformation tool introduction post, I’ve upgraded the tool with few new features. Now you can import external file with your coordinates in a CSV or GPX file (in a CSV file, coordinates need to be separated by comma). Also when you do the transformation you are now able to download new coordinates in a CSV file. From other improved things, it is worth noting much improved input coordinate validation and coordinate system detection, which is now based on a regular expression and not just on pure if statements. Not to mention number of bugs that were fixed on the way too.

It is important to mention, that all the work and actual transformation calculations are done in browser memory with use of just JavaScript and HTML5. This means that in older browser that don’t support HTML5, file upload will not work, just old single point transformation will be available. The tool is still not using server side scripts nor it uses cookies, and not a single coordinate is stored on a server.

Again, if you find this tool useful, or you have found a bug, or you have new feature request, please contact me via the contact form on the about page. I would love to hear your comments.

You can go and play with new GPS coordinates to Gauss–Krüger transformation tool features.