Svemir.co

Pigs can fly too ...

» 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.

More D3.js Maps Examples

This is a follow-up to my Is D3 a new web mapping tool? post with more great D3.js maps examples.

As a big beer lover, first I need to share an interactive map Mapping the Rise of Craft Beer that offers a detailed overview of the American craft-beer industry, based on the data gathered by the Brewers Association, created with D3.js.

Secondly, Mike Bostock, creator of D3.js, shared a transcript of his talk at Eyeo that includes more than 600 examples.

This talk does have a point, though. Examples are lightweight and informal; they can often be made in a few minutes; they lack the ceremony of polished graphics or official tools. Yet examples are a powerful medium of communication that is capable of expressing big ideas with immediate impact. And Eyeo is a unique opportunity for me to talk directly to all of you that are doing amazing things with code, data and visualization. So, if I can accomplish one thing here, it should be to get you to share more examples. In short, to share my love of examples with you.