Maison > base de données > tutoriel mysql > Comment implémenter une fonction simple de navigation cartographique à l'aide de MySQL et Ruby

Comment implémenter une fonction simple de navigation cartographique à l'aide de MySQL et Ruby

王林
Libérer: 2023-09-21 16:23:07
original
1027 Les gens l'ont consulté

Comment implémenter une fonction simple de navigation cartographique à laide de MySQL et Ruby

Comment utiliser MySQL et Ruby pour implémenter une fonction de navigation cartographique simple

Dans la société moderne, la fonction de navigation cartographique est devenue un élément indispensable de la vie des gens. Que ce soit en voyage, en voyage ou à la recherche d'un lieu spécifique, la navigation cartographique peut nous aider à trouver notre destination rapidement et avec précision. Cet article explique comment utiliser les langages MySQL et Ruby pour implémenter une fonction simple de navigation cartographique.

Tout d’abord, nous devons créer une base de données pour stocker les données cartographiques. L'utilisation de la base de données MySQL est un bon choix car MySQL est un système de gestion de base de données relationnelle open source qui présente les caractéristiques d'une grande stabilité, de performances supérieures et d'une facilité d'utilisation.

Dans MySQL, nous pouvons créer une base de données appelée « maps » et y créer deux tables, « locations » et « routes ». La table « emplacements » est utilisée pour stocker les informations de localisation, y compris le nom de l'emplacement, la longitude, la latitude, etc. ; la table « itinéraires » est utilisée pour stocker les informations de chemin entre deux emplacements, y compris le point de départ, le point final, la distance, etc. .

Ce qui suit est un exemple d'instruction SQL pour créer la table "locations":

CREATE TABLE locations (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(255) NOT NULL,
    latitude DECIMAL(9, 6) NOT NULL,
    longitude DECIMAL(9, 6) NOT NULL
);
Copier après la connexion

Ce qui suit est un exemple d'instruction SQL pour créer la table "routes":

CREATE TABLE routes (
    id INT PRIMARY KEY AUTO_INCREMENT,
    start_location_id INT NOT NULL,
    end_location_id INT NOT NULL,
    distance DECIMAL(9, 2) NOT NULL,
    FOREIGN KEY (start_location_id) REFERENCES locations(id),
    FOREIGN KEY (end_location_id) REFERENCES locations(id)
);
Copier après la connexion

Ensuite, nous pouvons utiliser le langage Ruby pour écrivez le code de la fonction de navigation cartographique. Tout d'abord, nous devons installer le pilote MySQL de Ruby, qui peut être installé à l'aide de la commande gem :

gem install mysql2
Copier après la connexion

Ensuite, dans le code Ruby, nous devons utiliser l'objet de connexion et l'objet de requête de MySQL pour effectuer des opérations de base de données. Ce qui suit est un exemple de code qui utilise Ruby pour se connecter à une base de données MySQL et interroger toutes les informations de localisation :

require 'mysql2'

client = Mysql2::Client.new(
    host: 'localhost',
    username: 'root',
    password: 'password',
    database: 'maps'
)

results = client.query('SELECT * FROM locations')

results.each do |row|
    puts "ID: #{row['id']}, Name: #{row['name']}, Latitude: #{row['latitude']}, Longitude: #{row['longitude']}"
end

client.close
Copier après la connexion

Le code ci-dessus crée d'abord un objet de connexion MySQL, puis utilise l'objet de connexion pour exécuter une instruction de requête pour interroger la table " emplacements" Toutes les données et imprimer les résultats de la requête. Enfin, la connexion à la base de données est fermée.

Ensuite, nous pouvons implémenter la fonction de navigation cartographique. Ce qui suit est un exemple de code simple pour interroger le chemin le plus court en fonction des points de départ et d'arrivée :

require 'mysql2'
require 'dijkstra'

client = Mysql2::Client.new(
    host: 'localhost',
    username: 'root',
    password: 'password',
    database: 'maps'
)

routes = client.query('SELECT * FROM routes')
locations = Hash.new

routes.each do |row|
    start_location_id = row['start_location_id']
    end_location_id = row['end_location_id']
    distance = row['distance']

    locations[start_location_id] ||= Hash.new
    locations[start_location_id][end_location_id] = distance
end

graph = Dijkstra::Graph.new(locations)

shortest_path = graph.shortest_path(start_location_id, end_location_id)

shortest_distance = shortest_path.distance
shortest_path.each do |location_id|
    location = client.query("SELECT * FROM locations WHERE id = #{location_id}").first
    puts "#{location['name']}: #{location['latitude']}, #{location['longitude']}"
end

puts "Shortest Distance: #{shortest_distance}"

client.close
Copier après la connexion

Le code ci-dessus crée d'abord une table de hachage vide "emplacements" pour stocker les informations de distance entre les emplacements. Ensuite, la table de hachage est remplie en fonction des résultats de la requête. Ensuite, utilisez l'algorithme de Dijkstra pour calculer le chemin le plus court et imprimez les informations de localisation et la distance du chemin le plus court.

Grâce aux opérations ci-dessus, nous avons implémenté une fonction simple de navigation cartographique. Bien entendu, cet article ne fournit qu’une idée préliminaire de mise en œuvre. La fonction de navigation cartographique réelle nécessite une conception et un développement plus détaillés en fonction des besoins réels. J'espère que cet article pourra fournir des références et de l'aide pour utiliser MySQL et Ruby pour implémenter les fonctions de navigation cartographique.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal