Есть таблица `map`(
`id` mediumint(7) unsigned default null,
`x` smallint(5) unsigned not null,
`y` smallint(5) unsigned not null,
`income` varchar(10) default null
)
1) Можно ли сделать ключом связку `x` и `y` – то есть x может повторяться, y может повторяться, но одновременно – нет. Или только если в одну строку их объединить а потом разбивать уже с помощью пхп?
2) Как сделать выборку такого плана – найти координаты x,y где id = 1 к примеру и потом получить все данные где координаты равны полученным +- 3. То есть в радиусе трех клеток.
14 июля 2009 в 17:01
НАТАРЫ — НПЦшники. Как собрался делать?
14 июля 2009 в 17:01
НПЦшники – то есть?))
Делаю чуть ли не один-в-один, только более современную… А-ля редАлерт3 онЛайн))
А по поводу замысловатых маршрутов – нахрен мне оно не сдалось! маршрут все равно не показывается, нигде не выводится – просто на его основе рассчитывается время прибытия войск. Так что там буду простым вычитанием координат делать =)
14 июля 2009 в 17:00
Но для твоей игрушки этого будет явно недостаточно. У меня спецуха с заточкой под ГИС, дипломчик серьёзный был, если чё, обращайся, просвещу по индексам тоже, чтоб шустрее работало. Только лучше не в личку, а здесь темы создавай, пусть люди почитают.
14 июля 2009 в 17:00
Нет, почему… Игра то web, там надо что – карту вывести, иметь возможность "ходить" по ней – перелистывая страницы и просматривая соседние локации и рассчитывать расстояние от места x1,y1 до x2,y2. Если слышал про игрушку "травиан" – то там как раз такая карта используется…)
14 июля 2009 в 17:00
А расстояние рассчитывать — все клетки доступны, или нет? А то вдруг по пересечёнке нельзя ходить, и приходится строить замысловатые маршруты?
14 июля 2009 в 17:00
//ru.wikipedia.org/wiki/Травиан
14 июля 2009 в 16:04
Ну, для неискушенных юзеров подобных сервисов, вроде меня, простенькой смотрелки с высчитыванием расстояний вполне хватает обычно…)
14 июля 2009 в 16:03
ГИС – эт че?
Онлайн игру пишу)
14 июля 2009 в 16:03
Загугли. ГеоИнформационныеСистемы. Пример — гугльмапс, йандексмапс, мапинфо, арквью, дубльгис, сёрфер и дохрена ещё. Ну ещё есть расширение оракла — spatial, кажися.
14 июля 2009 в 16:03
Почитай. Познавательно будет в любом случае.
14 июля 2009 в 16:03
Я так и подумал) Нет, у меня цели немножко попроще…))
14 июля 2009 в 16:03
А вообще писать ГИС, когда каждый третий использует яндекс.карты, а первые два – гугльмапс – пустая трата времени ИМХО
14 июля 2009 в 16:03
Не всегда. Если нужен специфический функционал, можно написать самому. В твоём случае, например Движок ландшафтовский, который будет рассчитывать сложность преодоления той или иной территории в том или ином направлении. Допустим, по песочку сложнее ходить, чем по асфальту и т.д.
14 июля 2009 в 16:03
Или поиск кратчайшего маршрута. Тоже ГИСовая задача. В общем случае — оптимального.
14 июля 2009 в 16:03
я говорил про ГИС общего назначения.)
14 июля 2009 в 16:03
Общего назначения? Думаешь, гугль — гис общего назначения? Как раз таки нет. Общего назначения ГИС малоизвестны в рядах обычных пользователей. Это Арквью, мапинфо например. А гугль — это самый простенький вариантик. Смотрелка карт с минимальными поисковыми возможностями, простейшими запросами.
14 июля 2009 в 16:02
Отлично, все работает!!! Спасибо!
14 июля 2009 в 16:02
№6 лучше иметь дело с квадратом радиуса и длины.
14 июля 2009 в 16:02
№8 обращайся.
14 июля 2009 в 16:02
ГИС пишешь?
14 июля 2009 в 15:04
Ух ты! *побежал пробовать*
Спасиб!)))
14 июля 2009 в 15:02
Можно и с радиусом. Формулу длины вектора знаешь? Вот эту длину нужно сравнивать в радиусом:)
14 июля 2009 в 11:04
Не забудь unique key сделать на пару x,y.
Твой запрос:
select b.x,b.y from map a inner join map b on (3>=abs(a.x-b.x) and 3>=abs(a.y-b.y)) where id=стопицот
Хотя мне больше нравится с радиусом. Это более естественно.
14 июля 2009 в 10:05
По поводу первого уже разобрался сам, не успел отписать, но все равно спасибо. По поводу второго – да, Кирилл, ты прав…
Владимир, а одним запросом это можно сделать?
14 июля 2009 в 8:01
Это не в радиусе, а в квадрате со стороной в 6 единиц.
14 июля 2009 в 5:04
1) Можно. Порекомендую отличный сайт php.su, тебе в раздел Документация MySQL
2) SELECT x, y FROM … WHERE id = 1
SELECT * FROM … WHERE x > … AND x < … AND y > … AND y < …