OpenStreetMap

Diary Entries in English

Recent diary entries

Madeira

Posted by silver mapper on 17 September 2017 in English (English)

Travelled to Madeira for a week at the end of February, staying at the excellent Pestana Grand Ocean Resort hotel. I have been prompted to compile this diary entry more than six months later because of lonvia's user diary entry of 10th September, regarding https://waymarkedtrails.org/, and my particular interest, https://hiking.waymarkedtrails.org. First, though, I must comment on the excellent level of detail in OSM for Madeira; I was extremely surprised, but so pleased, too, of course. It was of help in all ways: our journeys, our walks, and restaurants, even. What a difference it makes! We undertook three walks during our stay: the first, to get our legs moving, from the hotel, directly on the seafront, to Cãmara de Lobos alongside the beach. The second was to take no. 81 bus from Funchal to Eira do Serrado, then walk to Curral das Freiras (Nun's Valley). What a scenic walk! The third was to take no.96 bus to Estreito de Cãmara de Lobos, then walk Levada do Norte (South) to Cabo Girão. We had hoped to walk from Monte to the botanic gardens, also, but there had been a landslip, unfortunately, and the way was closed. Second, lonvia's waymarked trails were excellent in highlighting and naming the officially recognised walks: Madeira is such a complex arrangement of hills that it would be difficult to choose routes otherwise. Together, and continuing to use my same resources on my 'phone, they contributed to a most enjoyable holiday. Finally, I recollect the usefulness of the waymarked trails as I walked sections of the Chiltern Way and created some of its child relations in JOSM.

Location: Santa Rita, São Martinho, Funchal, Madeira, Archipelago of Madeira (Portugal)

GSoC 2017 PT_Assistant plugin for JOSM

Posted by Polyglot on 17 September 2017 in English (English)

Giacomo Servadei continued to work on the PT_Assistant plugin for JOSM

Hiking, bicycle and equestrian routes

The plugin is not just about public transport anymore, it can also highlight hiking and bicycle routes and report problems with their continuity. It now also visualizes forward/backward roles, which makes editing them a lot more convenient.

One of the problems I noticed over the past year, was that while fixing public transport route relations, sometimes foot and bicycle routes were broken and the validator didn't warn about this. The other problem is that when bicycle routes fork, forward and backward roles are needed, but they depend on the direction of the way and those little arrows are very hard to see.

Now one leg is coloured in blue, the other in red, which makes it immediately obvious whether the route is mapped correctly and it's easier to know if forward needs to become backward or vice versa.

forked bicycle route relation

Public transport improvements

Tools

  • The plugin can now sort stops according to the sequence of the ways in the route relations.

  • It can help with splitting roundabouts, while keeping the route relations that pass over them correct

  • There is a new map mode to add stop_position nodes. If such nodes are added to the first or last ways of the itinerary, the way is split and only the pertinent part is kept.

  • And there is a new map mode to help with ways selection. It will select all ways in between 2 forks, which are suitable for the mode of transport worked on. At the moment this defaults to bus.

Validation

There are also some new categories of problems the plugin reports and proposes fixes for.

  • gaps of a single (suitable) way + automatic fix

  • a bug with the detection of relations that could be fixed by simply sorting the ways was fixed.

  • a new category will tell the mapper about relations that end up with less gaps when the ways are sorted. This can help detect routes tagged with public_transport:version=2, which aren't composed of a simple sorted sequence of ways for each variation, but instead still have ways for both/all directions of travel in them.

  • There is a new category for routes that don't start or end neatly on a stop_position node near to a corresponding platform node.

  • The names of the first and last stops are compared to from and to tags in the route relations.

  • A warning is given if the first or last way don't correspond to the first or last stop in the route relation.

Update name suggestion index

Posted by SimonPoole on 17 September 2017 in English (English)

A couple of weeks back I regenerated the data in the "Name Suggestion Index" from a current planet dump, adding a largish number of new entries. The index is used by iD and Vespucci to generate canonical spellings for well-known brands and to apply the correct presets at the same time.

Naturally the raw list contains a lot of nonsense, and that's why there are two ways to reduce noise to an acceptable level: one, a list of (mis)spellings that are mapped to a canonical value https://github.com/osmlab/name-suggestion-index/blob/master/canonical.json and, two, a filter https://github.com/osmlab/name-suggestion-index/blob/master/filter.json that removes names that we don't want, for example Bank for banks.

Previously you could drop names only globally. Now you can drop them specifically for a type of object. For example, in older versions anything with the name "Casino" was dropped. Now only casinos with the name "Casino" are. (That was the reason why, in earlier versions, the suggestions didn't work for the French supermarket chain of that name.)

The index is not perfect, mainly because it is not country-specific (and creating such and index would be, IMHO, too much work). But, it works quite well, even given its limitations.

Now, why am I writing this: The update added a lot of names in non-Latin scripts and other new entries that need to be checked for whether or not they are actually useful. Considering that iD is used by the majority of new mappers, improving the index has a direct effect on the quality of their contributions.

Tagondaing

Posted by kaungmay on 16 September 2017 in English (English)

Tagondaing, Myanmar

Location: Tagondaing New Quarter, စံင်မံင်ထုင်း, Kawkareik District, Kayin, 170757, Myanmar

Optimising "OSM go"

Posted by -karlos- on 15 September 2017 in English (English)

A bridge, rendered by OSM building parts

As I wrote last time, “OMS go” will only be used for experiments now. Recently my friend Martin told me about an optimisation, he had done successfully. I implemented it and you may feel remarkable increased control reactions. This is really good if you use the head tracking of Google Cardboard or other stereo devices. To get the best performance, you may need to restart your browser. The 3D interface WebGL is limited and my data handling code is a hack anyway. My new tile handling does have disadvantages: Od shadows ad sunny places. And you can’t select things any more! You may add “&opt=0” to your URL to switch back to the old mode. or switch of shadows by &sha=0

What I did, may only be interesting for codes of 3D renderer:

“OSM go” uses the 3D framework “three.js”. It's, known as slow, causing bad frame rates. And yes, it does. I am not an expert in 3D hardware and interfaces. But I think there is a bottleneck at the interface to the graphic card. So that problem should also be in OpenGL, Direct-X and WebGL. Sending a package of data (points, three angles, etc. ) from the CPU to the GPU is relatively slow. But the amount of data is not that critically. So you should send less packages with much data. And three.js does the opposite, usually. Each mesh, containing a single geometry with points and faces is send separately to the hardware, again and again in every render cycle.

A three of meshes is a good way to define a complex 3D scene. But an extra mesh is only needed, if you want to change visibility, position and so on. “OSM go” creates an extra mesh for each building, street and stuff. So what? Three.js can merge geometries! After I merged all buildings of a “tile” into one “Multi-Geometry”, the speed increased remarkable. Compare the FPS displayed. You also “feel” now if new OSM data are processed. Moving and spinning gets slow. Just wait or spin a little while and you will “feel” the smooth controls again if it’s over.

It wasn’t a big challenge to implement it. Next to the merges, an array of materials (area-, wall- and roof colors) has to be managed dynamically. The first test was odd: If the zero-point of the geometry went out of screen, the whole multi-geometry got invisible. I assume there is a bounding box, I missed to update after the merges. So it had a size of zero. But who does this invisibility? Three.js or the graphic card? And why are there grey shadows on areas, not placed behind other objects?

I could do some more optimising. May be not in “OSM go” but the next project.

  • With “opt=1” you only merge the buildings, streets, landuse etc. Other OSM-Nodes are in an extra mesh for the closer LOD. They don’t take much render time. But you may switch them of by “opt=2”.
  • The use of BufferGeometries in three.js may increase the speed to
  • I could/should define lower detailed LOD for tiles fare away.
  • I should switch off the tiles “behind me”
  • There is an idea, how to reenable selecting, while using opt=1
  • I hope, OSM download could be done in the background
  • OSM tag analysing should be done by a tile server already
  • I could change the whole project to WebAssembly 8-I

I did have an ongoing dispute with Martin about storing 3D data in the graphic card and NOT loading the whole OSM objects and unchanged 3D tiles again and again for each render cycle. I only want to move the camera! And it looks like i will win. There are buffers in the GPU, may be not usable with three.js. I also found good hints, I should not deleting the whole render data in each cycle. This looks interessting: https://medium.com/@Zadvorsky/into-vertex-shaders-part-1-the-spaces-of-webgl-c70ded527841

While I experiment with the geometry optimisations, I see much ways to set up a new cyclic code and timing concept, but I will do that in a future project.

One more thing ;-)

Cardboard

Do you know, "OSM go” offers two control modes: Inspect- and Segway-Mode. Key X switches mode. And if you start it on a smartphone in landscape orientation, you get a direction controls and stereo view, ought to used in a Google Cardboard.

Now you will control the direction, the Segway is driving to. Just turn your head. First you will se your left or right surroundings. Slowly the (virtual) Segway will rotate to. Instinctively you kann turn back your head and still se the new direction. Puzzled by my words? Try it! Or watch that video: https://youtu.be/mBk1pUc4nZE

-karlos-

GSoC 2017 JOSM

Posted by Polyglot on 13 September 2017 in English (English)

Bogdans Afonins made several improvements to JOSM's search and to the download dialog:

Search dialog

JOSM search dialog now includes search based on presets

Search is incredibly powerful in JOSM. It's possible to add buttons to the toolbar for searches you need over and over again. Some examples:

Select all ways of a roundabout or a closed oneway way, which is in view plus all the nodes of that roundabout that have more than 1 one way connecting to it:

R inview ((junction=roundabout OR closed  oneway=yes) OR ways:2- child (junction=roundabout OR closed oneway=yes))

I use this to make them round and distribute the nodes or to conveniently select all the ways of a roundabout after it was split.

Find all routes that are already public_transport:version=2, which have members in view and which were modified:

R "public_transport:version"=2 route=bus inview modified

Download dialog

JOSM new download dialog with Overpass API wizard

The wizard works like in Overpass Turbo, but of course the output will be set to meta, so JOSM can digest it.

Some examples:

[out:xml][timeout:325][bbox:{{bbox}}];
(
  (
    node["highway"="bus_stop"];
    node["public_transport"="platform"]["train"!="yes"]["ferry"!="yes"];
    node["public_transport"="stop_position"]["train"!="yes"]["ferry"!="yes"];
  );
  ._;<;
  way["highway"="platform"];
  way["amenity"="shelter"];
  node["amenity"="shelter"];
  relation["route"="bus"];
);
(._;>;);
out meta;

This will download a skeleton of all bus routes in a the selected region. It's a bit complicated, but sometimes it's easier to go from complex to simple, by removing what is not needed for your use case.

Another one (now that I'm on a roll):

[out:xml][timeout:325][bbox:{{bbox}}];
    node["highway"="bus_stop"]["public_transport"!="platform"]->.allbusstopnodes;
    way["highway"];>;._->.allhighwaynodes;
    (.allbusstopnodes - .allhighwaynodes;);
out meta;

This stores all highway=bus_stop nodes in the selected bbox, which don't have public_transport tags yet in a named container. Then it puts all highway nodes in another. Then it subtracts these, resulting in all highway=bus_stop nodes, which are not part of highway ways.

Fire-fighting assets mapping with the Davao City Fire District - Hail Hydra(nt)!

Posted by GOwin on 13 September 2017 in English (English)

This post is a month overdue. I was in the Davao region last August (for business), but I thought I should touch bases with a few local organizations, including the local fire department, to chat about OpenStreetMap, since I'm there anyway. :smile:

My inquiries were enthusiastically received by the local fire officials as I introduced the goals of the HailHydra(nt)! initiative, and they decided they're willing to host a mapa-thon. We set it during the city's annual Kadayawan Festival.

Looking back, I should've pushed for another date. With many other departments busily attending to their own programs and tasks for the said activity, we ended up doing the mapping ourselves, instead of the expected participation of other orgs, we still managed to complete the goals we set for the day, with a little overtime :grin:

A Fire Hydrant Network base map

The main objective is to map the fire hydrants of the city, and complete the map of the fire stations and volunteer brigades operating in Davao.

image From 18 to 673 hydrants

Their official data actually reported 870 hydrants, but because of this activity, I actually discovered that they are reporting 197 duplicate data! :eyes: We started with just 18 hydrants in the OSM database, and at the end of the day, with a lot of help using the OSMHydrant app as editor, we completed the 673 hydrants of the city.

image The Fire Station and Hydrant map of Davao (and parts of Samal Island)

Working Offline, and Mobile using OsmAnd

Immediately after completing the map, they wanted a map (and an app) they can use in their Smartphones. OsmAnd is my go-to app - it's Open Source and Free, flexible, and can work with off-line. Perfect! I recommend the [community-maintained version from F-Droid.

image

We demonstrated how they may use the HOT Export Tool to create an offline database for OsmAnd, instead of waiting for the monthly updates. In the course of the orientation, we discovered a bug, which has thankfully been fixed in the upcoming version 3 of the Tasking Manager.

What's next?

They are keen to include the use of OsmAnd and OpenStreetMap in their operational readiness program, and would like to explore how to incorporate fire hazard mapping and participatory mapping with other agencies, especially after having demonstrated the use of the following proposed OpenStreetMap tags to identify potentially dangerous areas in their respective areas of responsibilities and use in standard GIS software:

hazard:authority = Bureau of Fire Protection  
hazard:type=fire  
hazard:risk= (high | very_high | extreme)  

HailHydra(nt)! :grin:

P.S. I will update this post when I get copies of the photos we can share. I, again, forgot to take my own pictures.

Location: Santo Niño Village, Poblacion, Davao City, Davao, 8000, Philippines

New international boundary data!

Posted by MapMakinMeyers on 12 September 2017 in English (English)

SOTM 2017 Conference at Aizuwakamatsu, Fukushima in Japan

Posted by Suthakaran on 12 September 2017 in English (English)

I was surprised when I received an email confirmation of the scholarship to participate in the conference of SOTM 2017. It was the first time to participate in the international SOTM which was held in Aizuwakamatsu, Fukushima, Japan.

SOTM Group Photo 2017

My application of talk SOTM 2017 was selected and I got an opportunity to present the OSM in Sri Lanka in the conference which has given me the opportunity to express my country circumstances of OSM activities and Importance of the OSM activities in Sri Lanka.

SOTM Group Photo 2017

SOTM 2017 has given me an opportunity to meet other scholars and most important why I participated that it was to introduce the Sri Lankan OSM community activities and understand about the other OSM community.

I had a chance to meet other OSM community members, researchers, lecturers and other experts and I had wonderful days in Japan. I love Japan Community and their dedicate, punctuality, kind and ect.. if I have a chance to visit to Japan again definitely It will be a great opportunity.

I also plan to become a member of the OpenStreetMap Foundation, and form an OpenstreetMap foundation in Sri Lanka.

Finally I take this opportunity to thank to OpenstreetMap Foundation, Donors, Japan OpenStreetMap Foundation that they gave me the opportunity to participate in STOM 2017 Conference.

Location: Lake Road No. 1, Puliyanthivu West, Manmunai North DS Division, Batticaloa District, Eastern, Sri Lanka

RTK test, Aerial pictures accuracy, and OSM Database Accuracy

Posted by StephaneP on 11 September 2017 in English (English)

RTK accuracy

Since 1 or 2 years, I'm testing some low-cost GNSS receivers with RAW output. The goal is to get a cm accuracy. One way is to store the raw data, then post-process it with the open-source software RTKLIB. I had various fails and success and I finally find a point to place my own reference station, my "base" : base

One test was to put the "rover" on my car go back to my home. RTKLIB gave me a solution with "FIX" for a big part of the record : global solutionorange is "float" and green is "fix" (best accuracy)

An interesting part is a new roundabout, too new to see it on any aerial picture : New roundabout

Ok, but what about the accuracy ? So, zoom in, zoom in, ..... zoom more !! individual location Each square is 1 cm. Yes, the accuracy is about 1.5 centimeters !!

RTKLIB gave me a very good accuracy, but is this real ? I can't answer for this individual point, but with the results I got on surveys points from the French national geographic institute (IGN), I think I can say that the accuracy should be at about 5 or 10 cm, as my base coordinates are not perfect.

RTK vs Aerial Imagery accuracy

We are in September 2017, and the IGN just published new aerial imagery, and they usually do a very very good job. Finally I can see the roundabout I draw on OpenStreetMap 1 year earlier.

Let's compare my recording and the pictures: aerial vs RTK

Hey ! Not bad !! Now I must train to drive with a centimeter accuracy :-)

OpenStreetMap database accuracy

I speak about gnss trace accuracy, aerial imagery accuracy, but what about OpenStreetMap accuracy ? I heard that with 7 decimals, the coordinates stored in the OpenStreetMap database get only a 10 cm accuracy. Don't you think that It'll be a problem sooner or later ?

Perhaps we should consider adding a 8th decimal ?

Odd brown area

Posted by ika-chan! on 11 September 2017 in English (English)

Source: https://www.openstreetmap.org/#map=19/38.42912/22.45257

At zoom 19 inwards, everything but the roads turn brown. What is going on? How do I detect odd polygons like that?

Location: Itea Ring Road, Κοινότητα Κίρρας, Kirra, Δήμος Δελφών, Regional Unit of Phocis, Region of Central Greece, Decentralized Administration of Thessaly - Central Greece, 33200, Greece

Sorting route relations

Posted by lonvia on 10 September 2017 in English (English)

waymarkedtrails.org, the site to show all things route related, has always taken care to try to put route relation members in a sensible order before displaying them. A couple of weeks ago this has changed. The site now assumes that the members of each relation are already in the correct order. The reason for that is simple: sorting route relations is hard.

Before explaining why sorting is hard, let me explain why order even matters. As long as you simply want to display the route on a map, the order is not important. Simply color each way in the relation to your liking and the route is nicely visible for a human reader. However, waymarkedtrails.org does a bit more than that. It displays an elevation profile and allows to download a GPX of the route, so you can put it onto your favourite mobile device. When the route is not sorted in the expected order, then the GPX is unusable for many applications, for example in Garmin Basecamp.

So why not sort the route automatically? On first sight, this seems to be a simple task. After all, a route should be a simple linear connection from A to B. Unfortunately, the real world is much more messy.

Even the most simple case of a linear route from A to B already has two solutions to the problem. The route may go from A to B or from B to A. In most cases the direction doesn't really matter but there are exceptions. Take a downhill mountain bike route, for example, or a nature trail with information panels that should be visited in the correct order.

Then there are loop routes which end at the point where they started. When sorting automatically there is no way to determine the starting point of the route. In both cases, we could add extra tagging to mark the start and end points. But why add the extra work when sorted route give the start and endpoints clearly at the beginning and end of the list?

Also, not all routes in OSM are strictly linear: there are routes with directional deviations. This can often be found in cycling routes which might go through oneway streets. Sometimes these deviations mapped with forward/backward roles but not always. Then there are routes that contain alternatives, side trips to lookout points and alternative access points.

waymarkedtrails could surely use some heuristics to get all these cases right most of the time but then there is no way to fix the decision if it gets it wrong. I think that is much better to leave the final decision about the order to the mapper.

Keeping your routes in the right order isn't too much work either. The JOSM relation editor is a very powerful tool when it comes to sorting relations. In the list of relations there is a column that immediately shows you the connectivity of your relation members. It can even handle directional deviations and roundabouts. Keeping an eye on the connectivity column is always a good idea while clicking your route together. It gives you immediate feedback when you've missed part of the route or created a small dangling end when you forgot to split a road. If you already have mapped your routes without sorting them, there is even a button to sort the members for you.

So, overall sorted routes are an advantage for everybody. They don't solve all problems with routes but they are a huge step forward in improving the quality.

Finally some numbers about the current state.

Hiking routes:

  • 74337 linear routes already sorted (65 %)
  • 14608 linear routes, not sorted (13 %)
  • 24992 non-linear routes (22 %)

Cycling routes:

  • 28020 linear routes already sorted (55 %)
  • 5164 linear routes, not sorted (10 %)
  • 17639 non-linear routes (35 %)

Which editor users are more likely to answer changeset discussions?

Posted by RicoElectrico on 9 September 2017 in English (English)

Much has been said about users of different OSM editor applications regarding their ability to respond to other users' feedback about their mapping. But why not let the data speak for themselves?

Here's a quick chart I made.

chart

I used ChangesetMD to import data into Postgres database, where I did the analysis.

Just uploaded my first track

Posted by Light Lee on 8 September 2017 in English (English)

I like how easy it is to upload a GPS trace. Does it show directly on OSM? or is there another step to enter the new path into the main database?

Madrid

Posted by Gloria Moller on 7 September 2017 in English (English)

Places to visit

presets are a sensitive topic

Posted by dieterdreist on 7 September 2017 in English (English)

After some tagging chat on the Italian ML it came to my attention that iD is setting crossing=zebra tags on crosswalks, a tag that is not documented as value for the crossing key, besides in the UK. As I believe that using different tags for the same thing - although not really harmful - makes everyone's lifes a bit more complicated, I thought I'd give them a hint, after all, usage of this tagging is still behind the longer standing established and documented one. So I created this issue: #4316.

It came up, there are already 3 tickets where the same issue had also been dismissed.

IMHO, we should take care that editing software proposes the same presets for the same objects and properties (not necessarily the same level of detail, or presets for the same things), because tag fragmentation is a burden on everyone. In this case it is very clear that crossing=zebra only came to significant use when it was added as a preset in iD in May 2014 (compare with the graph above).

OpenStreetMap 13th Anniversary Birthday party in Minsk, Belarus

Posted by Gardster on 7 September 2017 in English (English)

OSM 13th Anniversary On August 30th the Minsk OSM community together with the byGIS community celebrated the 13th anniversary of the OpenStreetMap maps. On this day the enthusiasts of cartography gathered at the meetup in the cozy Event Space hall. Event Space Meetup The program had four reports on various OpenStreetMap related themes:

  • Lev Dragunov opened the meeting with a video of the "Year of OSM edits" in Belarus and a brief retelling of the main events of OSM over the past year. video

  • Darafei Praliaskouski storied about those people who stand behind the site OpenStreetMap.org, how it functions and what can be done to make it work better. video

Darafei

  • Evgen Bodunov told about the project "Mapzen Valhalla" video

  • Vitali Danilovich opened a heated discussion about the tagging of public transport in OSM video

And at the meeting, as on the right birthday, there was a birthday cake with the emblem of the Belarusian OpenStreetMap community! byOSM Cake

Location: Раковское предместье, Tsentralny District, Minsk, Belarus

GLOBAL SECURITY COMPANY LIMITED

Posted by tmtatntmaps on 5 September 2017 in English (English)

ATTENTION OPERATIONS

Warm regards

#Team (GSCL)

Location: San Clemente, Orange County, California, United States of America

Quality Control, Part II, and Preserving History

Posted by apm-wa on 5 September 2017 in English (English)

Thanks to Kurban Bayram, I had a four-day weekend. Thanks to the preparations for the Asian Indoor and Martial Arts Games, central Ashgabat was closed to most traffic for all intents and purposes. So I stayed home and used the nascent gazetteer project to check for typographical errors and other misspellings in the OSM database for Ashgabat. I think I have caught all major typos and other errors.

I also began research into the historical names for the streets in this city, which in some cases have changed several times. To give you an idea of what's involved, here is the entry for Magtymguly, a major thoroughfare, which is now on its fifth name:

Magtymguly
Magtymguly (2033) şaýoly
Mervskiy prospekt, Kuropatkinskiy prospekt, prospekt Svobody, prospekt Stalina.

Magtymguly Pyragy (1724-1807) was a Turkmen spiritual leader and philosophical poet who made significant efforts to secure independence and autonomy for his people in the 18th century. He is considered the greatest Turkmen poet, though he wrote in Arabic, Persian, and Chagatai, not in Turkmen. The original name of this street was Mervskiy prospekt as the street led eastward to the city of Merv (modern Mary). It was subsequently changed to Kuropatkinskiy prospekt to honor Russian General Aleksey Kuropatkin (1848-1925), who is credited with the victory over the Teke armies at the Battle of Gökdepe and from 1890 to 1898 was governor of the Transcaspian governate, effectively viceroy of Turkestan. He was Russia’s minister of war from 1898 to 1904, and was blamed for major Russian defeats in the Russo-Japanese War. During the Soviet period the street was named prospekt Svobody (Freedom Prospect) except for a period between 1953 and 1961 when it was renamed in honor of Iosif Stalin.

Location: Magtymguly (2033) sayoly, Ashgabat, 744005, Turkmenistan

Does anyone even check what HOTOSM contributors leave behind?

Posted by ff5722 on 4 September 2017 in English (English)

To name a few things in the above area:

  • residential roads tagged as motorways, primary or secondary

  • the same road went from motorway to service to residential to primary

  • island roads (not connected to rest of network)

  • roads ending just before the crossing

  • roads split in arbitrary segments all over the place

  • ways with a node for every half a metre length

And how about this?

Location: Nguyen Nghiem Ward, Quảng Ngãi, Quảng Ngãi Town, Quang Ngai province, Vietnam