Je suis intéressé à trouver des modèles de constellations. J'utilise l'application Android "Sky Map" pour inspection visuelle, je souhaite maintenant créer une application pour trouver des structures de constellation similaires. Un sous-problème de cela consiste à trouver les coordonnées pour des objets célestes spécifiques.
Exemple: Comment puis-je obtenir les coordonnées de "lune" à un temps, une date et un emplacement donné. P>
Object: Moon [info|live][less]
Right Asc: 04h 15m 12.5s **Decl: 17° 05' 46.3"** (J2000) [HMS|Dec]
Magnitude: -10.54 Altitude: 56° Solar Elongation: 100.4° Constellation: Ari
Sun distance: 147.77 Million Km Earth distance: 0.38 Million Km
Rise: 10:48 Transit: 18:40 Set: 01:35 **Europe/London**
4 Réponses :
Je ne suis pas sûr que cela soit utile, mais voici une implémentation python. Vous devriez comprendre les paramètres de localisation acceptés, mais la date, l'heure et la minute sont toutes là-bas: sortie: strong> p>
ci-dessous, vous pouvez trouver le code sur la façon de faire cela dans Python. Il existe de nombreuses façons d'intégrer le code dans une application. Juste pour l'illustration, j'ai lancé les résultats dans un Dataframe Pandas afin que vous puissiez voir les résultats. J'ai également ajouté du code pour traiter les paramètres de proxy, si ce n'est pas le cas, vous pouvez le laisser et simplement obtenir le texte de l'URL avec le package des demandes.
espère que cela aide. P>
import urllib
import pandas as pd
import numpy as np
username = 'userID' # ex. ID
password = "password!" # password
dataURL = "https://theskylive.com/moon-info"
proxies = {
'https': 'https://{}:{}@proxy:port'.format(username, password)}
proxy = urllib.request.ProxyHandler(proxies)
opener = urllib.request.build_opener(proxy)
urllib.request.install_opener(opener)
with urllib.request.urlopen(dataURL) as url:
text = str(url.read())
tableStart = text.find('The Moon Ephemeris')
tableEnd = text.find('Distance of The Moon from Earth')
tableProgress = tableStart
findSTR = 'moon&date='
loc = text.find(findSTR,tableStart,tableEnd)
startDate = text[loc+len(findSTR):loc+len(findSTR)+10]
table = []
tableRow = []
counter = 0
counter2 = 0
diff = [20,4]
while loc>0:
loc1 = text.find('<td class="desktop">',tableProgress,tableEnd)
loc2 = text.find('<td>',tableProgress,tableEnd)
if loc1<0:
if loc2<0:
loc = -1
else:
loc = loc2
pos = 1
else:
if loc2<0:
loc = loc1
pos = 0
else:
loc = np.min([loc1,loc2])
pos = np.argmin([loc1,loc2])
if loc>0:
locStart = loc+diff[pos]
loc = text.find('</td>',loc,tableEnd)
if loc>0:
extractedText = text[locStart:loc]
if counter ==1:
extractedText = extractedText.replace('°',' deg')
extractedText = extractedText.replace('’',' min')
extractedText = extractedText.replace('”',' sec')
elif counter ==3:
extractedText = extractedText.replace('”',' arcsec')
tableRow = tableRow+ [extractedText]
tableProgress = loc
counter = counter+1
if counter==5:
counter2 = counter2+1
counter = 0
table = table+[tableRow]
tableRow = []
idx = pd.date_range(start='2019-02-26', periods=len(table), freq='D')
cols = ['Right Ascension','Declination','Magnitude','Apparent Diameter','Constellation']
Data = pd.DataFrame(table,index=idx,columns=cols)
print(Data)
Je ne suis pas un expert Android, mais c'est ce que vous pouvez faire dans
Fyi, les anciennes classes de date-heure terriblement gênantes telles que java.util.date code> , java.util.calendar code> et java.text.simpledeformat code> sont maintenant
Corrigez @basilbourque ... Cela était juste censé être un exemple rapide et sale pour montrer comment obtenir les données :)
Vous pouvez simplement configurer votre propre serveur de raclage de données, vous pouvez utiliser IFTTT pour obtenir les données et le stocker au début. P>
Voici quelques belles tutoriels: https://public.tablope.com/en-us/s/blog/2013/08/DATA-SCRAPING-PART-IFTTTTTTTT P>
Je suis sûr que vous ne voulez pas que votre application fasse la gratte. Une fois que vous l'avez enregistré, vous pouvez le manipuler davantage avec une langue et la fournir par ex. Format JSON en tant que DataSource macérable pour votre application. P>
Prévoyez-vous d'extraire ces données dans l'application Android sur une étape de préparation sur le PC?
Ouais je veux extraire ces données dans une application Android. Y a-t-il quelque chose qui ne va pas dans ma question, il a 2 bowvotes.
Je ne connais pas les bowvotes, désolé. Peut-être que les lecteurs pensent qu'il n'y a pas assez de détails dans la publication sur la mise en œuvre planifiée.
Quels détails je vais ajouter? Je ferai à coup sûr.
Je ne suis pas un programmeur mobile, mais peut-être des détails sur les versions du système d'exploitation pris en charge, les cadres que vous envisagez d'utiliser seraient utiles?