A lot of Island nations, like Japan and Indonesia, have many islands within the same country. Other islands, like Borneo are part of multiple countries. I am looking for a shapefile that gives the island name, preferably in WGS84. I am only interested in islands in SE Asia and nearby Pacific Islands.
It's not in shapefile format, but the NGA maintains a rather comprehensive publicly-available data set on world-wide geographic names, among which should be islands. You can try looking through their tabular data to find island names; you can download by individual countries or the whole world in one (~5GB) file.
not very helpful
Perhaps you didn't know how to use it.
Go to http://download.geonames.org/export/dump and download : either allCountries.zip [300 MB] (BEWARE, this is not a good idea as there are over 11 million features), or a single country XX.zip where XX is ISO country code.
Unzip to get the text file, which is in tab-separated values (.tsv) format, with encoding UTF-8.
The details of each feature name is on its own line. Each line consists of fields separated by TAB. The fields are: ID, Name, Alt-Name, Alt-Alt-Name, Lat, Long, ?, Field Code, ... doesn't matter
These Field Codes are listed at /featureCodes_en.txt
ISL island a tract of land, smaller than a continent, surrounded by water at high water ISLET islet small island, bigger than rock, smaller than island. ISLF artificial island an island created by landfill or diking and filling in a wetland, bay, or lagoon ISLM mangrove island a mangrove swamp surrounded by a waterbody ISLS islands tracts of land, smaller than a continent, surrounded by water at high water ISLT land-tied island a coastal island connected to the mainland by barrier beaches, levees or dikes ISLX section of island
There are thousands of other Field Codes, far too much stuff to put all the features on one map. So you have to filter it to get what you want, based on the Field Code.
[For filtering, see below]
Load the filtered file into your GIS program. In QGIS: Layer > Add Layer > Add delimited text layer. Point the X at LONG, point the Y at LAT, label with NAME. Modify the labelling settings to show labels for the X,Y points. You will probably want to only show the labels when you are at a large scale, say 5000:1
I left the hardest part till last.
One way is to:
load the XX.txt file into a spreadsheet app, (Excel, LibreOffice Calc) delete the columns you don't need, (you need Name, Lat, Long, Field Code) delete the rows you don't want (you want only Field Code = ISL) save the file as .tsv
A better way is to write a program that does the same thing only quicker.
This is a PHP script to filter /AU.txt for "ISL" and output to /AU.ISL.csv You will need to edit the configuration section to fit your circumstances.
Download the zip file, unzip it and save the php file somewhere, edit the configuration and save, from a command prompt: php /path/to/filter.fieldcode.php 204850 features in AU.txt filtering by Field Code = ISL ... 4347 features output to AU.ISL.csv in 1.5360379219055 seconds