diff --git a/src/main/java/HygParser.kt b/src/main/java/HygParser.kt new file mode 100644 index 0000000..97a8e87 --- /dev/null +++ b/src/main/java/HygParser.kt @@ -0,0 +1,66 @@ +import com.opencsv.CSVReaderBuilder +import java.io.FileReader +import java.util.stream.Stream + +class HygParser { + /** + * Read the HYG database. + */ + fun parse(): Stream { + // get the csv reader + val csvReader = CSVReaderBuilder(FileReader("data/hygdata_v3.csv")) + .withSkipLines(1) + .build() + + // stream the lines + // indices that we're interested in + val id = 0 + val hip = 1 + val hd = 2 + val hr = 3 + val gl = 4 + val bf = 5 + val proper = 6 + val ra = 7 + val dec = 8 + val dist = 9 + val pmra = 10 + val pmdec = 11 + val rv = 12 + val mag = 13 + val absmag = 14 + val spect = 15 + val ci = 16 + val x = 17 + val y = 18 + val z = 19 + val vx = 20 + val vy = 21 + val vz = 22 + val rarad = 23 + val decrad = 24 + val pmrarad = 25 + val pmdecrad = 26 + val bayer = 27 + val flam = 28 + val con = 29 + val comp = 30 + val comp_primary = 31 + val base = 32 + val lum = 33 + val varrrr = 34 + val var_min = 35 + + return csvReader.map { + // println("it = ${Arrays.toString(it)}") + HygStar( + ra = it[ra].toDouble(), + dec = it[dec].toDouble(), + mag = it[mag].toDouble(), + absmag = it[absmag].toDouble(), + properName = it[proper] + ) + }.stream() + + } +} \ No newline at end of file diff --git a/src/main/java/HygStar.kt b/src/main/java/HygStar.kt new file mode 100644 index 0000000..9c0acbf --- /dev/null +++ b/src/main/java/HygStar.kt @@ -0,0 +1 @@ +data class HygStar(val ra: Double, val dec: Double, val mag: Double, val absmag: Double, val properName: String?) \ No newline at end of file diff --git a/src/main/java/SvgCreator.kt b/src/main/java/SvgCreator.kt index 38b6c19..83a78cc 100644 --- a/src/main/java/SvgCreator.kt +++ b/src/main/java/SvgCreator.kt @@ -33,8 +33,11 @@ fun main(args: Array) { // make the svg file File("stars.svg").printWriter().use { out -> - out.println("""""") - out.println("""""") + out.println(""" + + """.trimIndent()) // history.forEach { // out.println("${it.key}, ${it.value}") // } @@ -48,7 +51,8 @@ fun main(args: Array) { var minMagnitude = Double.POSITIVE_INFINITY // read the hyg database... - parseHygDB() + HygParser() + .parse() // filter stars visible to the naked eye .filter { star -> star.mag <= apparentMagnitudeCutOff @@ -108,6 +112,11 @@ fun main(args: Array) { // print it to svg val random = Random() out.println("""""") + + // print name? + if (star.properName?.isNotEmpty() == true) { + out.println("""${star.properName}""") + } } if (altitude < minAltitude) @@ -191,65 +200,3 @@ fun getDistanceFromLatLonInKm(lat1: Double, lon1: Double, lat2: Double, lon2: Do fun deg2rad(deg: Double): Double { return deg * (Math.PI / 180) } - -/** - * Read the HYG database. - */ -fun parseHygDB(): Stream { - // get the csv reader - val csvReader = CSVReaderBuilder(FileReader("data/hygdata_v3.csv")) - .withSkipLines(1) - .build() - - // stream the lines - // indices that we're interested in - val id = 0 - val hip = 1 - val hd = 2 - val hr = 3 - val gl = 4 - val bf = 5 - val proper = 6 - val ra = 7 - val dec = 8 - val dist = 9 - val pmra = 10 - val pmdec = 11 - val rv = 12 - val mag = 13 - val absmag = 14 - val spect = 15 - val ci = 16 - val x = 17 - val y = 18 - val z = 19 - val vx = 20 - val vy = 21 - val vz = 22 - val rarad = 23 - val decrad = 24 - val pmrarad = 25 - val pmdecrad = 26 - val bayer = 27 - val flam = 28 - val con = 29 - val comp = 30 - val comp_primary = 31 - val base = 32 - val lum = 33 - val varrrr = 34 - val var_min = 35 - - return csvReader.map { - // println("it = ${Arrays.toString(it)}") - Starr( - ra = it[ra].toDouble(), - dec = it[dec].toDouble(), - mag = it[mag].toDouble(), - absmag = it[absmag].toDouble() - ) - }.stream() - -} - -data class Starr(val ra: Double, val dec: Double, val mag: Double, val absmag: Double) diff --git a/stars.svg b/stars.svg index 93261b2..d19307f 100644 --- a/stars.svg +++ b/stars.svg @@ -1,5 +1,8 @@ - + + @@ -17,6 +20,7 @@ +Caph @@ -52,6 +56,7 @@ +Shedir @@ -82,6 +87,7 @@ +Cih @@ -131,6 +137,7 @@ +Ruchbah @@ -194,6 +201,7 @@ +Almaak @@ -237,6 +245,7 @@ +Polaris @@ -299,6 +308,7 @@ +Algol @@ -341,6 +351,7 @@ +Mirphak @@ -400,6 +411,7 @@ +Alcyone @@ -539,6 +551,7 @@ +Aldebaran @@ -596,6 +609,7 @@ +Hassaleh @@ -655,6 +669,7 @@ +Capella @@ -690,8 +705,10 @@ +Bellatrix +Alnath @@ -812,6 +829,7 @@ +Betelgeuse @@ -826,6 +844,7 @@ +Menkalinan @@ -985,6 +1004,7 @@ +Alhena @@ -1200,6 +1220,7 @@ +Gomeisa @@ -1235,6 +1256,7 @@ +Castor @@ -1252,6 +1274,7 @@ +Procyon @@ -1281,6 +1304,7 @@ +Pollux @@ -1684,6 +1708,7 @@ +Alphard @@ -1769,6 +1794,7 @@ +Ras Elased Australis @@ -1836,6 +1862,7 @@ +Regulus @@ -1880,6 +1907,7 @@ +Algieba @@ -2030,6 +2058,7 @@ +Merak @@ -2039,6 +2068,7 @@ +Dubhe @@ -2068,6 +2098,7 @@ +Zosma @@ -2182,6 +2213,7 @@ +Denebola @@ -2194,8 +2226,10 @@ +Groombridge 1830 +Phad @@ -2258,8 +2292,10 @@ +Megrez +Gienah Ghurab @@ -2321,6 +2357,7 @@ +Algorab @@ -2345,6 +2382,7 @@ +Kraz @@ -2366,6 +2404,7 @@ +Porrima @@ -2413,6 +2452,7 @@ +Alioth @@ -2422,6 +2462,7 @@ +Cor Caroli @@ -2439,6 +2480,7 @@ +Vindemiatrix @@ -2503,12 +2545,15 @@ +Mizar +Spica +Alcor @@ -2594,6 +2639,7 @@ +Alkaid @@ -2618,6 +2664,7 @@ +Mufrid @@ -2649,6 +2696,7 @@ +Thuban @@ -2681,6 +2729,7 @@ +Arcturus @@ -2771,6 +2820,7 @@ +Izar @@ -2802,7 +2852,9 @@ +Kochab +Zubenelgenubi @@ -2879,6 +2931,7 @@ +Zubeneschemali @@ -2939,6 +2992,7 @@ +Alphekka @@ -2976,6 +3030,7 @@ +Unukalhai @@ -3123,6 +3178,7 @@ +Kornephoros @@ -3248,6 +3304,7 @@ +Rasalgethi @@ -3300,6 +3357,7 @@ +Rastaban @@ -3319,6 +3377,7 @@ +Rasalhague @@ -3348,6 +3407,7 @@ +Cebalrai @@ -3381,6 +3441,7 @@ +Etamin @@ -3485,6 +3546,7 @@ +Vega @@ -3524,6 +3586,7 @@ +Sheliak @@ -3635,6 +3698,7 @@ +Albireo @@ -3794,6 +3858,7 @@ +Sadr @@ -3835,6 +3900,7 @@ +Deneb @@ -3848,6 +3914,7 @@ +Gienah @@ -3916,6 +3983,7 @@ +Alderamin